在Global.asax.cs文件中重写Application_Error方法,并在此处添加自定义错误处理逻辑,以便将try/catch语句捕获的异常重定向到所需的自定义错误页面。
示例代码如下:
protected void Application_Error(object sender, EventArgs e) { var exception = Server.GetLastError(); var httpException = exception as HttpException; Response.Clear(); Server.ClearError(); var routeData = new RouteData(); routeData.Values["controller"] = "Errors"; routeData.Values["action"] = "Index"; routeData.Values["exception"] = exception; Response.StatusCode = 500; if (httpException != null) { Response.StatusCode = httpException.GetHttpCode(); switch (Response.StatusCode) { case 403: routeData.Values["action"] = "Http403"; break; case 404: routeData.Values["action"] = "Http404"; break; } } // Pass exception details to the target error View. routeData.Values["exception"] = exception; // Avoid IIS7 getting in the middle Response.TrySkipIisCustomErrors = true; // Execute the error controller and pass it the route data. IController controller = new ErrorsController(); controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData)); }