我正在使用ASP.NET MVC 4.5.1 razor C#
我的Web.config配置了以下标签之一。
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" redirect="/Error.htm"/>
</customErrors>
我有一个课程可以捕获下面的所有异常。
public class Error : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
}
}
我的基本控制器如下所示。
[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时,我得到404但是没有执行Error类的catch块。
本地主机/全Userabc
我错过了什么吗?
我也试过Install-Package NotFoundMvc
,但这不起作用并得到例外&#34;无效的操作例外&#34;
答案 0 :(得分:0)
您的Error
类不会被调用此URL,因为它继承了HandleErrorAttribute,只有当action方法抛出异常时才会调用它。在您的情况下,由于您的URL与任何路由都不匹配,因此不执行任何操作方法。
如果您希望代码执行404错误,请尝试使用此问题的默认路由示例 - ASP.NET MVC - Catch All Route And Default Route