Нет 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";
}
Другие вопросы по тегам