如何在ASP.Net Web API中检查请求内容类型?

21

我在ASP.NET Web Api中遇到了检查请求内容类型的问题,不知道有没有办法在控制器层面检查请求内容类型是 application/xml 还是 application/json?

感谢任何帮助。


3
你尝试过使用正则表达式:Request.Content.Headers.ContentType吗? - Registered User
是的,但它一直给我一个空值。我以为应该给我内容类型,但它没有,所以我想知道那个属性有什么用? - user1186065
3个回答

16

接受的答案有误导性,因为它回答了MVC范例的问题而不是Web API,这也被@ataravati指出。以下是如何在Web API控制器操作中访问ContentType的示例。

[HttpPost]
[Route("api/post")]
public void Post()
{
    var contentType = this.Request.Content.Headers.ContentType;
    //other stuff
}

6

1
我真是太蠢了。我一直在检查Request.Content.Headers属性,但我应该使用Request.Headers属性。谢谢Erica。 - user1186065
7
为了与ASP.NET运行时兼容,应该避免使用HttpContext,因为它在自托管环境中无法工作。每个控制器都有一个可直接访问的Request属性,因此不需要使用HttpContext选项。 - Darrel Miller
@DarrelMiller 谢谢 - 我之前没有意识到。Request 属性拥有与 HttpContext 相同的属性(Headers 和 ContentType),因此它应该仍然以相同的方式工作。 - Erica
15
怎么选定那个作为正确答案?这个问题是关于asp.net Web API的,而回答却涉及到asp.net MVC。请问需要修改吗? - ataravati
你应该描述如何使用它? - Abdul Hameed

0
在我的情况下,我尝试通过以下代码从头部获取ContentType。 var x = this.Request.Content.Headers.GetValues("Content-Type").First(); 希望其他人也能从中得到解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接