In asp.net MVC there is a custom error in web.config like below:
<customErrors mode="On"> <error statusCode="404" redirect="~/404.html"/> </customErrors>
Sometimes you want to redirect the user to your own custom error controller and log the error message. You can handle it! Firstly create your own Error controller:
public class ErrorController : Controller
{
public ActionResult HttpError404()
{
return View("HttpError404");
}
public ActionResult HttpError500()
{
return View("HttpError500");
}
public ActionResult General()
{
return View("General");
}
}
Secondly, you need to handle this controller in a higher level in your application, refer to global.asax and create the Application_Error method with the following definition:
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
HttpException httpException = exception as HttpException;
RouteData routeData = new RouteData();
routeData.Values.Add("controller", "Error");
if (httpException != null)
{
switch (httpException.GetHttpCode())
{
case 404:
routeData.Values.Add("action", "HttpError404");
break;
case 500:
routeData.Values.Add("action", "HttpError500");
break;
default:
routeData.Values.Add("action", "General");
break;
}
}
routeData.Values.Add("error", exception);
Server.ClearError();
Response.TrySkipIisCustomErrors = true;
IController errorController = new ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
Done! Now you can create your own Views of ErrorController and have your handled ErrorController.