Нет MediaTypeFormatter для чтения объекта типа из содержимого с типом носителя 'text/html'
Запуск Core 2.0 Web Api. Все отлично работает локально, когда я отправляю через Postman на мой контроллер. Однако я получаю:
Нет MediaTypeFormatter для чтения объекта типа "Сообщение" из содержимого с типом медиа "text/html"
При развертывании на рабочем сервере
контроллер:
[HttpPost]
public void Post([FromQuery] Message message)
{
_service.UserRequest(message);
}
Сообщение:
public class Message : IEntity
{
public string To { get; set; } = string.Empty;
public string From { get; set; } = string.Empty;
public string Body { get; set; } = string.Empty;
}
Не уверен, что вызывает это. Это MIME-типы в конфигурации IIS?
2 ответа
Это исправлено (добавлены новые форматеры):
var obj = await response.Content.ReadAsAsync<T>(
new List<MediaTypeFormatter>
{
new XmlMediaTypeFormatter(),
new JsonMediaTypeFormatter()
});
Я попробовал этот вариант предыдущего ответа с целью ужесточения кода:
var obj = await response.Content.ReadAsAsync<T>( new [] { new JsonMediaTypeFormatter() });
Тем не менее, он все еще жаловался на меня, так как в ответе по-прежнему не было правильного заголовка контента.
Итак, я попытался это изменить заголовки, что работает для меня, но я действительно не знаю, есть ли у этого какие-либо неожиданные побочные эффекты, которые я просто еще не продумал:
if(response.Content?.Headers?.ContentType != null)
{
response.Content.Headers.ContentType.MediaType = "application/json";
}