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_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
Session["Test"] = "Message:" + objErr.Message.ToString();
}
(The Session is only for tests. Im gonna use a database to log error, if i get this to work.)
Then i try to throw an exception from my HomeController and my Home/Index View, but it only triggers Debug.
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
throw (new Exception());
return View();
}
In my Webconfig file i set a defaulterror page but it doesn’t redirect to the view:
<customErrors defaultRedirect="Home/Error">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
So firstly remember that global error handling should be a last resort, and controller classes have a specific error method for errors;
Within this you can redirect to the standard shared error view;
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
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
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.
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