@TechNOIR

ASP.NET Core (web api). После публикации приложения в IIS перестала работать загрузка файла на сервер. В чем ошибка?

Добрый день!
Нужно было сделать небольшое API (ASP.NET Core 3.1) с заливкой файла на сервер и дальнейшей обработкой его.
Набросал код, на локальной машине где разрабатывалось - все работает (IIS EXPRESS).

На удаленном сервере установил нужные для ASP NET компоненты, создал сайт в IIS, опубликовал в VS в папку и утащил на сервер.
Делаю такой же запрос и получаю ошибку:
System.NullReferenceException: 'Object reference not set to an instance of an object.'


Подключаюсь через VS Remote Debug и вижу что ошибка в
objFile.files.Length > 0
То есть файл как будто и не прилетает через форму.

Отправлю multipart/form-data через Postman.

Код:
public class FileUploadAPI
        {
            public IFormFile files { get; set; }
        }

        [HttpPost]
        public async Task<String> Post([FromForm] FileUploadAPI objFile)
        {
            try
            {
                if (objFile.files.Length > 0)
                {
                    string UploadFolder = _webHostEnvironment.ContentRootPath + "\\Upload\\";
                    if (!Directory.Exists(UploadFolder))
                    {
                        Directory.CreateDirectory(UploadFolder);
                    }
                    string infile = _webHostEnvironment.ContentRootPath + objFile.files.FileName;
                    using (FileStream fileStream = System.IO.File.Create(infile))
                    {
                        objFile.files.CopyTo(fileStream);
                        fileStream.Flush();
                    }
                    return "OK";
                }
                else
                {
                    return "Fail";
                }
            }
            catch (Exception ex)
            {
                return ex.Message.ToString();
            }
        }


Подскажите пожалуйста в чем может быть проблема?

Спасибо заранее
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
firedragon
@firedragon
Senior .NET developer
Гляньте
https://github.com/vkorotenko/VueRecaptcha/blob/ma...

https://github.com/vkorotenko/VueRecaptcha/blob/ma...
Ключевой момент здесь
for (let i = 0; i < files.length; i++) {
      formData.append("files", files[i]); // имя должно совпадать в модели, то есть для моего случая первая буква в нижнем регистре остальные в верхнем Files -> files, FirstName -> firstName 
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы