我正在尝试将自定义错误页面添加到我的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属性路由