繁体   English   中英

ASP.Net WebAPI在不同的用户代理中具有不同的内容类型

[英]ASP.Net WebAPI has different content type in different user agents

我正在尝试学习ASP.Net WebAPI,并且很难弄清发生了什么。 我创建了一个包含以下操作的小型应用程序:

public IHttpActionResult Hello() 
{
    return Ok("Hi");
}

这个工作正常,所以我在浏览器中查看它。 我懂了:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Hi</string>

这是使用Chrome。 我使用扩展名来查看内容类型,它是text/xml 我想进一步检查,所以我使用Postman REST Client进行测试。 在那里,我看到: "Hi" ,内容类型为application/json 我完全感到困惑。 我发现Postman只是在更改内容类型,但是要确保我安装了另一个REST客户端,但它返回了application/json 在Internet Explorer中,它尝试将结果下载为JSON文件。 到底他妈发生了什么。 有没有一种方法可以让我拥有通用的内容类型?

Web api可以序列化对Xml或Json的响应。 它读取Content-Type Http标头以确定哪个。 使用提琴手检查浏览器的请求。 邮递员默认将application / json作为内容类型传递-这样您会得到json响应。

您可以将以下代码添加到WebApiConfig文件中,以删除XML序列化器,它将始终返回json。

var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
    config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM