asp.net core 2.2 приводит к появлению неподдерживаемого mediatype http / 415

От почтальона я пытаюсь отправить файл на api-контроллер asp.net core 2.2.

POST /api/epd/noshow/uploadfile HTTP/1.1
Host: localhost:44361
User-Agent: PostmanRuntime/7.11.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 3d633228-2554-442b-84f4-4e8214972886,a8f994f4-973e-411f-b96b-778af2c082b4
Host: localhost:44361
accept-encoding: gzip, deflate
content-type: multipart/form-data; boundary=--------------------------201375848683546790642901
content-length: 237
Connection: keep-alive
cache-control: no-cache
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW


Content-Disposition: form-data; name="file"; filename="C:\temp\caldr.json


------WebKitFormBoundary7MA4YWxkTrZu0gW--

Метод api-controller

[HttpPost]
[AllowAnonymous]
public IActionResult UploadFile([FromForm]IFormFile file)
{
    return Ok();
}

FromForm, FromBody уже пробовал, ничего. Установка типа содержимого в почтальоне, а не установка типа содержимого в почтальоне, всегда возвращает одну и ту же ошибку.

Какие-либо предложения ?


person BrilBroeder    schedule 08.06.2019    source источник
comment
Почему вы установили заголовок content-type, который указывает boundary как --------------------------201375848683546790642901, а другой заголовок Content-Type, который говорит, что граница равна ----WebKitFormBoundary7MA4YWxkTrZu0gW?   -  person itminus    schedule 10.06.2019


Ответы (2)


Это просто, чем ожидалось :) Вам нужно отправить тело запроса в виде данных. Здесь в этом примере показан только простой вызов отправки файла с ASp.NET Core 2.2 - WebAapi

Почтальон:

введите описание изображения здесь

API:

введите описание изображения здесь

person Divyang Desai    schedule 08.06.2019
comment
Именно так я и поступил в почтальоне. Но все равно не работает. Какая-то конфигурация в конвейере, которую я должен добавить? - person BrilBroeder; 13.06.2019
comment
Пожалуйста, посмотрите изменение кода, вам нужно удалить [FromForm] из метода запроса @BrilBroeder - person Divyang Desai; 13.06.2019
comment
Удалил FromForm по-прежнему безуспешно. Это даже не задевает конструктор контроллера. Подумал, может проблема с маршрутизацией. Итак, я перешел на GET, удалил тело, и он попал в контроллер / действие. Вернулся к POST, добавил файл, и он попал в действие, но в нем нет файла. Я заметил, что забыл установить «ключ» в почтальоне. Установка ключа, и снова он не попадает в конструктор контроллера :-( - person BrilBroeder; 13.06.2019
comment
@BrilBroeder, это похоже на проблему XY - person Divyang Desai; 13.06.2019
comment
:-) нет это не так. Я просто хочу загрузить файл и оттуда обработать этот файл. - person BrilBroeder; 13.06.2019
comment
Начните с чистого шаблона; проверьте, что работает для вас. Если это сработает, ваша проблема отличается от того, что вы пытаетесь использовать для @BrilBroeder. - person Divyang Desai; 13.06.2019
comment
Я сделал, и он работает, но когда я переключаюсь на этот контроллер, этого не происходит. Почему ??? Вот что я пытаюсь понять. - person BrilBroeder; 13.06.2019

Нашел проблему и решение. Просто для справки, если кто-то еще сталкивается с той же ошеломляющей проблемой.

В классе бабушки контроллера есть следующий атрибут:

[Consumes("application/json")]

конечно данные формы не были приняты :-)

переопределить это поведение по умолчанию, добавив к действию следующий атрибут

[Consumes("multipart/form-data")]
person BrilBroeder    schedule 13.06.2019