我想在HttpRequestBase类型上实现扩展方法 IsJsonRequest():bool 。从广义上讲,这种方法应该是什么样的,是否有任何参考实现?
这是一个私有API。
编辑:
建议;检查x-requested-with标头是否为“xmlhttprequest”?
答案 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;
}