通过将数据传递到错误控制器来在 ASP.NET MVC 中进行有效的自定义错误处理
强大的错误处理对于 ASP.NET MVC 应用程序中的积极用户体验至关重要。 虽然 Application_Error
中的全局 Global.asax.cs
事件提供集中式错误管理,但有效地将相关数据传递到错误控制器需要采取策略性方法。
此示例利用查询字符串将错误信息传递给错误控制器,从而避免了多个错误路由的需要。 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 = "NotFound"; break; case 500: action = "ServerError"; break; default: action = "GenericError"; break; } Server.ClearError(); // Clear the server-side error Response.Redirect(String.Format("~/Error/{0}?message={1}", action, Server.UrlEncode(exception.Message))); } }</code>
然后更新相应的错误控制器操作以从查询字符串中检索消息:
<code class="language-csharp">// GET: /Error/NotFound public ActionResult NotFound() { string message = Request.QueryString["message"]; ViewBag.Message = message; // Or use a ViewModel return View(); }</code>
此方法通过利用现有路由简化了错误处理。 然而,考虑潜在的性能影响至关重要,尤其是在高流量环境中,因为重复使用可能会由于会话对象管理等因素而影响效率。 生产部署需要仔细考虑和优化。
以上是如何将数据传递到 ASP.NET MVC 错误控制器以进行自定义错误处理?的详细内容。更多信息请关注PHP中文网其他相关文章!