Csharp/C#教程:如何在Application_Error()中知道asp.net中的请求是ajax分享


如何在Application_Error()中知道asp.net中的请求是ajax

如何在Application_Error()中知道asp.net中的请求是ajax

我想在Application_Error()中处理应用程序错误。如果请求是ajax并且抛出了一些exception,则在日志文件中写入错误并返回包含客户端错误提示的json数据。 否则,如果请求是同步并且抛出了一些exception,请在日志文件中写入错误,然后重定向到错误页面。

但现在我无法判断请求是哪种。 我想从标题中获取“X-Requested-With”,遗憾的是标题的键不包含“X-Requested-With”键,为什么?

测试请求标头应该有效。 例如:

public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult AjaxTest() { throw new Exception(); } } 

并在Application_Error

 protected void Application_Error() { bool isAjaxCall = string.Equals("XMLHttpRequest", Context.Request.Headers["x-requested-with"], StringComparison.OrdinalIgnoreCase); Context.ClearError(); if (isAjaxCall) { Context.Response.ContentType = "application/json"; Context.Response.StatusCode = 200; Context.Response.Write( new JavaScriptSerializer().Serialize( new { error = "some nasty error occured" } ) ); } } 

然后发送一些Ajax请求:

  

您还可以在包含方法IsAjaxRequest的HttpRequestWrapper中包装Context.Request(类型为HttpRequest)。

 bool isAjaxCall = new HttpRequestWrapper(Context.Request).IsAjaxRequest(); 

可以在客户端ajax调用中添加自定义标头。 请参阅https://forums.asp.net/t/1229399.aspx/1

尝试在服务器中查找此标头值。

你可以用它。

上述就是C#学习教程:如何在Application_Error()中知道asp.net中的请求是ajax分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  private static bool IsAjaxRequest() { return HttpContext.Current.Request.Headers["X-Requested-With"] == "XMLHttpRequest"; } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1022156.html

(0)
上一篇 2022年1月6日
下一篇 2022年1月6日

精彩推荐