ASP.NET MVC中的自定义错误处理:Global.asax中的Application_Error事件
在ASP.NET MVC应用中,Global.asax中的Application_Error事件对于处理未处理异常和提供自定义错误页面至关重要。
将数据传递给错误控制器
Application_Error事件中的当前代码确定HTTP状态码并设置RouteData对象以传递给Error控制器。但是,该代码没有提供将异常详细信息传递给控制器的方法。
一种稳健的方法是使用查询字符串参数来传输异常信息。修改后的Application_Error代码如下:
<code class="language-csharp">protected void Application_Error(object sender, EventArgs e) { Exception exception = Server.GetLastError(); Response.Clear(); HttpException httpException = exception as HttpException; if (httpException != null) { string action; switch (httpException.GetHttpCode()) { case 404: // 页面未找到 action = "HttpError404"; break; case 500: // 服务器错误 action = "HttpError500"; break; default: action = "General"; break; } // 清除服务器上的错误 Server.ClearError(); Response.Redirect(String.Format("~/Error/{0}/?message={1}", action, exception.Message)); } }</code>
错误控制器
错误控制器将接收异常消息作为查询字符串参数:
<code class="language-csharp">// GET: /Error/HttpError404 public ActionResult HttpError404(string message) { return View("SomeView", message); }</code>
注意事项
虽然这种方法允许灵活的异常处理,但请考虑以下几点:
以上是如何在 ASP.NET MVC 中实现带有异常详细信息的自定义错误处理?的详细内容。更多信息请关注PHP中文网其他相关文章!