How do i use Application_Error in ASP.NET MVC?

前端 未结 2 746
粉色の甜心
粉色の甜心 2020-12-23 12:32

I want to use Application_Error with my MVC project, but i can\'t get it to work. I add the following to my Global.asax file:

    protected void Application_         


        
2条回答
  •  天涯浪人
    2020-12-23 13:06

    So firstly remember that global error handling should be a last resort, and controller classes have a specific error method for errors;

    protected virtual bool OnError(string actionName, 
        System.Reflection.MethodInfo methodInfo, Exception exception)
    

    Within this you can redirect to the standard shared error view;

    protected override bool OnError(string actionName, 
        System.Reflection.MethodInfo methodInfo, Exception exception)
    {
       RenderView("Error", exception);
       return false;
    }
    

    The problem you have in the global application error is that it has no concept of views or controllers, so if you want to redirect in there then you must use a known URL

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception exception = Server.GetLastError();
        System.Diagnostics.Debug.WriteLine(exception);
        Response.Redirect("/Home/Error");
    }
    

    but you don't need to do this. If you set the default error page in web.config then you don't need that redirect

    
    

    However, unless you've added an error view to your Home controller that doesn't exist, so add the following to the home controller

    public ActionResult Error()
    {
        return View();
    }
    

    Then (if you're sensible) you'd put the error handling code in the Error() method, as that's where all unhandled errors will end up.

    public ActionResult Error()
    {
        Exception exception = Server.GetLastError();
        System.Diagnostics.Debug.WriteLine(exception);
        return View();
    }
    

    And finally remember that by default you don't see custom errors if you are connecting to localhost! So you need to change that behaviour

    
    

提交回复
热议问题