程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ASP.NET MVC自定义错误处理Application_Error Global.asax?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决ASP.NET MVC自定义错误处理Application_Error Global.asax??

开发过程中遇到ASP.NET MVC自定义错误处理Application_Error Global.asax?的问题如何解决?下面主要结合日常开发的经验,给出你关于ASP.NET MVC自定义错误处理Application_Error Global.asax?的解决方法建议,希望对你解决ASP.NET MVC自定义错误处理Application_Error Global.asax?有所启发或帮助;

无需为此创建新路由,您只需重定向到控制器/操作并通过queryString传递信息即可。例如:

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:
        // page not found
        action = "httpError404";
        break;
      case 500:
        // server error
        action = "httpError500";
        break;
      default:
        action = "General";
        break;
      }

      // clear error on server
      Server.ClearError();

      Response.Redirect(String.Format("~/Error/{0}/?message={1}", action, exception.messagE));
    }

然后,您的控制器将收到您想要的任何东西:

// GET: /Error/httpError404
public ActionResult httpError404(String messagE) {
   return VIEw("SomeVIEw", messagE);
}

您的方法需要权衡取舍。在这种错误处理中循环时要非常小心。另一件事是,由于要通过asp.net管道来处理404,因此将为所有这些匹配创建会话对象。对于频繁使用的系统,这可能是一个问题(性能)。

解决方法

我有一些基本代码来确定我的MVC应用程序中的错误。目前在我的项目,我有一个名为控制器Error与操作方法httpError404()httpError500()General()。它们都接受字符串参数error。使用或修改下面的代码。将数据传递给错误控制器进行处理的最佳/正确方法是什么?我想有一个尽可能强大的解决方案。

protected void Application_Error(object sender,EventArgs E)
{
    Exception exception = Server.GetLastError();
    Response.Clear();

    httpException httpException = exception as httpException;
    if (httpException != null)
    {
        RouteData routeData = new RouteData();
        routeData.Values.Add("controller","Error");
        switch (httpException.GethttpCode())
        {
            case 404:
                // page not found
                routeData.Values.Add("action","httpError404");
                break;
            case 500:
                // server error
                routeData.Values.Add("action","httpError500");
                break;
            default:
                routeData.Values.Add("action","General");
                break;
        }
        routeData.Values.Add("error",exception);
        // clear error on server
        Server.ClearError();

        // at this point how to properly pass route data to error controller?
    }
}

大佬总结

以上是大佬教程为你收集整理的ASP.NET MVC自定义错误处理Application_Error Global.asax?全部内容,希望文章能够帮你解决ASP.NET MVC自定义错误处理Application_Error Global.asax?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。