【问题标题】:How to check request content type in ASP.Net Web API?如何检查 ASP.Net Web API 中的请求内容类型?
【发布时间】:2021-06-30 12:32:09
【问题描述】:

我找不到在 ASP.NET Web Api 中检查请求内容类型的方法。有没有办法在控制器级别检查请求内容类型是 application/xml 还是 application/json?

任何帮助将不胜感激。

【问题讨论】:

  • 您是否尝试过常规:Request.Content.Headers.ContentType?
  • 是的,但它一直给我一个空值。我认为这应该给我内容类型,但不是想知道该属性的用途是什么?

标签: asp.net-web-api


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    每个控制器都有一个上下文:http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpcontext.aspx

    所以你应该可以拨打HttpContext.Request.ContentType

    【讨论】:

    • 我太笨了。我正在检查 Request.Content.Headers 属性。我应该使用 Request.Headers 属性。谢谢埃里卡。
    • 您确实希望避免使用 HttpContext,因为它只是为了与 ASP.NET 运行时兼容。它不适用于自托管。每个控制器都有一个可以直接访问的 Request 属性,因此不需要 HttpContext 选项。
    • @DarrelMiller 谢谢 - 我没有意识到这一点。 Request 属性具有与 HttpContext 相同的属性(Headers 和 ContentType),因此它应该仍然以相同的方式工作。
    • 如何选择正确答案?问题是关于 asp.net Web API 的。答案是针对 asp.net MVC。
    • 你应该描述一下。这个怎么用?
    【解决方案3】:

    在我的例子中,我尝试通过下面的代码从标题中获取 ContentType。

    var x = this.Request.Content.Headers.GetValues("Content-Type").First(); 希望其他人能从中得到解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-17
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多