ASP.NET,确定请求内容类型是否适用于JSON

时间:2010-01-15 16:04:26

标签: asp.net json content-type

我想在HttpRequestBase类型上实现扩展方法 IsJsonRequest():bool 。从广义上讲,这种方法应该是什么样的,是否有任何参考实现?

这是一个私有API。

编辑:

建议;检查x-requested-with标头是否为“xmlhttprequest”?

3 个答案:

答案 0 :(得分:4)

这将检查内容类型和X-Requested-With标题pretty much all javascript frameworks use

public bool IsJsonRequest() {
    string requestedWith = Request.ServerVariables["HTTP_X_REQUESTED_WITH"] ?? string.Empty;
    return string.Compare(requestedWith, "XMLHttpRequest", true) == 0
        && Request.ContentType.ToLower().Contains("application/json");
}

答案 1 :(得分:4)

我遇到了同样的问题,但无论出于什么原因,jQuery的$ .get都没有发送内容类型。相反,我必须检查Request.AcceptTypes中的“application / json”。

希望这有助于其他人在将来遇到同样的问题。

答案 2 :(得分:0)

由于它是私有API,您可以控制JSON的内容类型,因此只需检查它是商定的值。

e.g。

public static bool IsJsonRequest(this HttpRequestBase request)
{
  bool returnValue = false;
  if(request.ContentType == "application/json")
  returnValue = true;

  return returnValue;            
}