运行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类型吗?
答案 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";
}