首页 >后端开发 >C++ >如何在 ASP.NET MVC 中实现带有异常详细信息的自定义错误处理?

如何在 ASP.NET MVC 中实现带有异常详细信息的自定义错误处理?

Linda Hamilton
Linda Hamilton原创
2025-01-14 10:17:46789浏览

How Can I Implement Custom Error Handling with Exception Details in ASP.NET MVC?

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操作会为请求创建一个会话对象,这可能会影响高使用率系统的性能。
  • 确保错误处理功能强大,并且不允许将敏感信息显示给未经授权的用户。

以上是如何在 ASP.NET MVC 中实现带有异常详细信息的自定义错误处理?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn