Неверный экземпляр HttpContent. Он не имеет заголовок типа "multipart" с параметром "граница"

Я пишу веб-api, у которых есть метод post, принимающий файлы из загруженного из пользовательского интерфейса.

public async Task<List<string>> PostAsync()
    {

        if (Request.Content.IsMimeMultipartContent("form-data"))
        {
            string uploadPath = HttpContext.Current.Server.MapPath("~/uploads");

            var streamProvider = new MyStreamProvider(uploadPath);

            await Request.Content.ReadAsMultipartAsync(streamProvider);

            return streamProvider.FileData
                .Select(file => new FileInfo(file.LocalFileName))
                .Select(fi => "File uploaded as " + fi.FullName + " (" + fi.Length + " bytes)")
                .ToList();
        }
        else
        {
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Request!");
            throw new HttpResponseException(response);
        }
    }

тогда я отправляю запрос на вышеуказанное действие почтальоном. Я установил заголовок типа контента в multipart/form-data но при выполнении действия происходит ошибка. здесь есть сообщение об ошибке:

"Предоставлен недопустимый экземпляр HttpContent. Он не имеет заголовок типа" multipart "с параметром 'border'.\r\nПараметр: content"

я пошел в заголовки почтового корреспондента, но я обнаружил, что тип содержимого заголовка запроса был установлен в application-json.

Postman screenshot

Кто-нибудь может мне помочь?

Ответ 1

Вы просматриваете заголовок ответа, который является json-форматом, и это нормально для вас.

Ваша настоящая проблема связана с запросом почтальона, поэтому просто удалите запись "Content-Type: multipart/form-data" из заголовка запроса. Достаточно загрузить файл в виде данных формы и отправить запрос.

Посмотрите, что произойдет, когда вы вручную устанавливаете Content-Type или нет: введите описание изображения здесь введите описание изображения здесь

Почтальон знает, как установить тип контента и границу, так как вы устанавливаете только тип содержимого

Ответ 2

Первый. У почтальона есть ошибка при обработке запросов на основе файлов.

Вы можете попробовать добавить это к своему WebApiConfig.cs, это сработало для меня:

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();