要在ASP.NET MVC应用程序中捕获和处理自定义错误,可以通过修改web.config文件中的配置来实现。
首先,在web.config文件中找到以下配置节点:
将mode属性的值从"Off"改为"On",以启用自定义错误处理。修改后的代码如下所示:
然后,可以添加一个错误处理器来处理自定义错误。在Global.asax.cs文件中,添加以下代码:
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");
routeData.Values.Add("action", "Index");
if (httpException != null)
{
switch (httpException.GetHttpCode())
{
case 404:
routeData.Values["action"] = "NotFound";
break;
// 可以添加其他自定义错误处理逻辑
default:
routeData.Values["action"] = "GenericError";
break;
}
}
Server.ClearError();
Response.TrySkipIisCustomErrors = true;
IController errorController = new ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
上述代码将捕获应用程序中的错误,并根据错误类型进行相应的处理。在此示例中,根据HTTP状态代码,将路由重定向到相应的错误处理方法。
然后,可以创建一个ErrorController来处理错误。在Controllers文件夹中,创建一个名为ErrorController.cs的文件,并添加以下代码:
public class ErrorController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult NotFound()
{
return View();
}
public ActionResult GenericError()
{
return View();
}
}
上述代码中的三个方法分别对应于不同类型的错误处理视图。
最后,创建相应的错误处理视图。在Views文件夹中创建一个名为Error的文件夹,并在其中创建与控制器方法名称相对应的视图文件。例如,创建Index.cshtml、NotFound.cshtml和GenericError.cshtml视图文件。
这样,当应用程序发生错误时,就会根据错误类型将请求路由到相应的错误处理视图,并显示相应的错误信息。