没有MediaTypeFormatter可用于从媒体类型为“text / html”的内容中读取类型的对象

时间:2017-12-14 21:00:23

标签: .net asp.net-core-2.0 web.api

运行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;
}

不确定是什么导致了这一点。它是IIS配置中的mime类型吗?

2 个答案:

答案 0 :(得分:1)

修复了它(添加了新的格式化程序):

        var obj = await response.Content.ReadAsAsync<T>(
            new List<MediaTypeFormatter>
            {
                new XmlMediaTypeFormatter(),
                new JsonMediaTypeFormatter()
            });

答案 1 :(得分:1)

我尝试了上一个答案的这个变体,目的是收紧代码:

var obj = await response.Content.ReadAsAsync<T>( new [] { new JsonMediaTypeFormatter() });

然而,它仍然抱怨我,因为回复仍然没有正确的内容标题。

所以,我试着改变标题,这对我有用,但我真的不知道这是否有任何意想不到的副作用,我还没想过:

if(response.Content?.Headers?.ContentType != null)
{
    response.Content.Headers.ContentType.MediaType = "application/json";
}