ASP.NET MVC自定义错误页,一页可显示多个错误



我正在尝试将自定义错误页面添加到我的web应用程序中,根据堆栈溢出的一些答案,我做了以下操作,控制器

public class ErrorController : Controller
{
public ViewResult Index()
{
return View("Error");
}
public ViewResult NotFound()
{
Response.StatusCode = 404;  //you may want to set this to 200
return View("NotFound");
}
}

我添加了两个视图,Error.cshtml和NotFound.cshtml

我在web.config文件中添加了以下内容:

<customErrors mode="On" defaultRedirect="~/Error">
<error redirect="~/Error/Error" statusCode="404" />


</customErrors>

我需要有一个页面用于所有错误,或者用于相同的错误类别,例如一个页面,用于所有400的错误,所以不要进行

<error redirect="~/Error/Error" statusCode="400" />
<error redirect="~/Error/Error" statusCode="401" />
<error redirect="~/Error/Error" statusCode="402" />

做一些类似的事情

<error redirect="~/Error/Error" statusCode="40***" />

只需像下面这样制作错误控制器,即可获得简单的解决方案

public class ErrorController : Controller
{
// GET: Error
public ActionResult Index()
{
return View("Error");
}
}

并在web.config文件中使用以下代码

<customErrors mode="RemoteOnly" defaultRedirect="Error" />

我会在这里使用范围属性。例如,给定这组范围

什么是射程?

  • 范围它匹配一个值范围内的整数。{ParameterName:range(1500(}

一些已知的示例范围:

  • 信息回复(100–199(
  • 成功回复(200–299(
  • 重定向消息(300–399(
  • 客户端错误响应(400–499(
  • 服务器错误响应(500–599(

现在,假设我可以创建一个具有路由属性的控制器并定义一个范围-使用方法名称来帮助记录它的内容以用于维护目的:以下是其中的几个,将由您来确定视图等。

public class ErrorController : Controller
{
[HttpGet]
[Route("error/{statusCode:int:range(100,199)}")]
public ActionResult InformationalResponse(int statusCode)
{               
return View();
}
[Route("error/{statusCode:int:range(400,499)}")]
public ActionResult ClientErrorResponse(int statusCode)
{               
return View();
}
}

参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

路由新手?https://visualstudiomagazine.com/articles/2014/10/28/asp-net-mvc-5-1-new.aspx

属性路由:https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-6.0#rest api属性路由

相关内容

  • 没有找到相关文章

最新更新