C#学习教程:在ASP.NET上检测JSON请求的最佳方式是什么用于标准化。在ASP.NETMVC中,您可以使用扩展方法Request.IsAjaxRequest(),因为ajax客户端可以请求多种不同的内容类型,而不仅仅是“application/json”,例如:“application/xml”。我正在使用以下代码片段/扩展方法,但我很想看看其他人在做什么,或者我是否遗漏了什么,或者有更好的方法。publicstaticboolIsJsonRequest(这个HttpRequestBase请求){returnrequest.Headers["Accept"].Split(',').Any(t=>t.Equals("application/json",StringComparison.OrdinalIgnoreCase));提前谢谢。为什么不能从发出请求的客户端传递一个bool变量,比如IsJsonRequest?然后制作检查动作方法。或者您可以使用请求的Accept标头。这表明客户端希望服务器发送什么类型的内容。您应该使用请求的接受标头。这表明客户端希望服务器发送什么类型的内容。不要使用RequestedContent-Type标头-这表示请求消息文字的类型。如果您要向服务器发送一些Json或向服务器发送一些Json,请务必将其设置为“application/json”,但如果您正在发出GET请求,则Content-Type应该为空(因为GET请求的主体为空),如果您要发布多部分表单或其他内容,它应该反映该类型。Web上表单的行为是将请求内容类型设置为“multipart/form-data”,将接受类型设置为“text/html”。在web上,重载服务器以返回与请求的内容类型相同的类型,同时忽略接受类型标头将意味着发布的表单返回编码的表单数据而不是html页面。这显然是不正确的行为,所以不要围绕请求内容类型的这种解释来构建您的应用程序。我发现PeteKirkham的回答非常有用。我认为它应该被标记为解决方案。这是我的代码://////判断请求是否是Json请求///publicstaticboolGetIsJsonRequest(HttpRequestrequest){if(request==null){thrownewArgumentNullException("request");}boolrtn=false;conststringjsonMime="application/json";如果(request.AcceptTypes!=null){rtn=request.AcceptTypes.Any(t=>t.Equals(jsonMime,StringComparison.OrdinalIgnoreCase));}返回rtn||request.ContentType.Split(new[]{';'},StringSplitOptions.RemoveEmptyEntries).Any(t=>t.Equals(jsonMime,StringComparison.OrdinalIgnoreCase));}-更新-傻弄@Mvision建议这是MVC版本:}boolrtn=false;conststringjsonMime="application/json";如果(request.AcceptTypes!=null){rtn=request.AcceptTypes.Any(t=>t.Equals(jsonMime,StringComparison.OrdinalIgnoreCase));}返回rtn||请求.ContentType.Split(new[]{';'},StringSplitOptions.RemoveEmptyEntries).Any(t=>t.Equals(jsonMime,StringComparison.OrdinalIgnoreCase));如果你需要在asp.netclassic和MVC中使用这个方法,那么第二种这是建议的方法在HttpREquestBase中转换HttpRequest,只需用HttpRequestWrapper包装它:publicstaticboolGetIsJsonRequest(HttpRequestrequest){(要求));你可以检查Request.IsAjaxRequest()这样你就可以Likeif(Request.IsAjaxRequest()){returnnewJsonResult();}returnActionResult您可以在您使用的控制器方法中使用Request.ContentType。如果你需要它在多个地方工作,你也可以把它放在ActionFilterAttribute中。希望这样会更高效以上就是C#学习教程的全部内容:在ASP.NET上检测JSON请求的最佳方式是什么注意—publicstaticclassJsonResultController{publicstaticboolIsJsonRequest(thisHttpRequestBaserequest){returnGetIsJsonRequest(请求);}publicstaticboolIsJsonRequest(这个HttpRequest请求){returnGetIsJsonRequest(请求);}privatestaticboolGetIsJsonRequest(dynamicrequest){if(request==null){thrownewArgumentNullException("request");}boolrtn=false;conststringjsonMime="application/json";如果(request.AcceptTypes!=null){rtn=(request.AcceptTypesasstring[]).Any(t=>t.Equals(jsonMime,StringComparison.OrdinalIgnoreCase));}返回rtn||(request.ContentTypeasstring??"").Split(new[]{';'},StringSplitOptions.RemoveEmptyEntries).Any(t=>t.Equals(jsonMime,StringComparison.OrdinalIgnoreCase));}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
