MVC Razor 中的 404 实现
404 implementation in MVC Razor
我正在使用 ASP.NET MVC 4.5.1 razor C#
我的 Web.config 配置了以下标签之一。
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" redirect="/Error.htm"/>
</customErrors>
我有一个 class 来捕获如下所示的所有异常。
public class Error : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
}
}
我的 Base Controller 如下所示。
[Error]
public class BaseController : AsyncController
{
}
我的控制器动作方法如下
[HttpGet, Route("All-User"), LoginAuthentication, AdminAuthorization]
public async Task<ActionResult> AllUsers()
{
var list = await _user.List();
return View(list);
}
我的 Url 如下所示,完美运行
localhost/All-User
当我在 url 下面执行时,我得到 404,但是没有执行错误 class 的 catch 块。
localhost/All-Userabc
我是不是漏掉了什么?
我也试过 Install-Package NotFoundMvc
但这不起作用并且出现异常 "Invalid Operation Exception"
您的 Error
class 不会为此 url 调用,因为它继承了 HandleErrorAttribute,只有当操作方法抛出异常时才会调用。在您的情况下,没有执行任何操作方法,因为您的 URL 不匹配任何路线。
如果您希望针对 404 错误执行代码,请尝试使用此问题中的默认路由示例 - ASP.NET MVC - Catch All Route And Default Route
我正在使用 ASP.NET MVC 4.5.1 razor C#
我的 Web.config 配置了以下标签之一。
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" redirect="/Error.htm"/>
</customErrors>
我有一个 class 来捕获如下所示的所有异常。
public class Error : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
}
}
我的 Base Controller 如下所示。
[Error]
public class BaseController : AsyncController
{
}
我的控制器动作方法如下
[HttpGet, Route("All-User"), LoginAuthentication, AdminAuthorization]
public async Task<ActionResult> AllUsers()
{
var list = await _user.List();
return View(list);
}
我的 Url 如下所示,完美运行
localhost/All-User
当我在 url 下面执行时,我得到 404,但是没有执行错误 class 的 catch 块。
localhost/All-Userabc
我是不是漏掉了什么?
我也试过 Install-Package NotFoundMvc
但这不起作用并且出现异常 "Invalid Operation Exception"
您的 Error
class 不会为此 url 调用,因为它继承了 HandleErrorAttribute,只有当操作方法抛出异常时才会调用。在您的情况下,没有执行任何操作方法,因为您的 URL 不匹配任何路线。
如果您希望针对 404 错误执行代码,请尝试使用此问题中的默认路由示例 - ASP.NET MVC - Catch All Route And Default Route