加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Global.asax中的ASP.NET MVC Application_Error处理程序

发布时间:2020-12-16 06:49:06 所属栏目:asp.Net 来源:网络整理
导读:在Global.asax中,我们有一个名为MvcApplication的System.Web.HttpApplication类 代表应用程序,我们可以在其中处理各种事件. 我对Application_Error处理程序感兴趣. 在这个处理程序中,我们可以使用类MvcApplication的所有属性. -1- 总是'(MvcApplication)发送
在Global.asax中,我们有一个名为MvcApplication的System.Web.HttpApplication类
代表应用程序,我们可以在其中处理各种事件.

我对Application_Error处理程序感兴趣.
在这个处理程序中,我们可以使用类MvcApplication的所有属性.

-1-

总是'(MvcApplication)发送者’和’this’是同一个对象吗?

protected void Application_Error(object sender,EventArgs e)
{
  var httpApp = (MvcApplication)sender;
  var equality1 = httpApp == this; // always true?
}

-2-

获得错误的最佳方法是什么?
以下示例返回相同的错误?

Exception ex0 = this.Context.Error;
Exception ex1 = httpContext.Error;
Exception ex2 = Server.GetLastError();
var equality3 = ex1 == ex2; // true?

解决方法

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 MVC Custom Error Handling Application_Error Global.asax?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读