.NET Core2.2에서 IFormFile을 모델과 함께 나열하면 Post가 끝나지 않습니다.

처음에



이미지 업로드에서 같은 모델의 항목을 일괄로 복수 Post하려고 했을 때 Post 처리가 끝나지 않는 것이 있었기 때문에 원인을 조사했습니다.

환경


  • .NET Core2.2 ※여기 중요
  • Visual Studio 2019

  • 증상



    submit에서 Post를 실행하면 Post가 완료되지 않고 처리가 끝나지 않습니다.

    또한 메모리 사용량이 점점 올라간다.


    원인



    · 모델과 함께 IFormFile을 나열하면 발생합니다.
    (View내에 IFormFile용의 태그를 기재하지 않아도, 코드가 그렇게 되고 있는 것만으로 증상이 나옵니다.)

    ↓↓ .NET Core2.2의 버그인 것 같습니다. (GitHub의 issue에 실렸습니다)
    IFormFile bind error when using in sub collection

    대응



    · .NET Core 버전을 2.1.7로 되돌리거나 3.0으로 올린다.
    · 모델과 함께하지 않고, IFormFile만으로 List로 한다(IFormFileCollection 사용해도 좋다)

    재현 방법



    1. .NET Core2.2를 사용한다.
    2. 적당히 모델 작성

    Movie.cs
        public class Movie
        {
            [Display(Name = "タイトル")]
            public string Title { get; set; }
    
            [Display(Name = "詳細")]
            public string Detail { get; set; }
    
            [Display(Name = "画像")]
            public string Img { get; set; }
        }
    

    3. 상기의 모델과 「IFormFile 」의 프로퍼티를 포함한 모델을 작성

    Movie.cs
        public class MovieWithPost
        {
            public Movie Movie{ get; set; }
    
            // ↓ファイル受信用のプロパティを追加
            public IFormFile FormFile { get; set; }
        }
    

    4. 상기에서 작성한 모델을 리스트로 한다

    Movie.cs
    
        public class MoviesViewModel
        {
            public List<MovieWithPost> MovieList { get; set; }
        }
    

    5.view에서 submit에서 post를 실시한다(코드는 할애)
    6. Post가 완료되지 않는다

    일본어 기사가 더 늘어나면 기쁩니다.

    좋은 웹페이지 즐겨찾기