当url包含4个或更多路径段时,不会在MVC 3中为404触发Application_Error

时间:2011-08-09 02:03:49

标签: asp.net asp.net-mvc iis-7.5

我正在尝试为404错误创建自定义错误页面。我在Global.asax.cs中实现了Application_Error方法。在大多数情况下,这非常有用,但是不会调用具有4个或更多路径段的URL。

我遇到问题的具体网址是:

http://localhost/Area/Controller/Action/ID

如果我删除了ID,我的自定义404年龄加载正常。问题似乎是我的路径中有4个级别(/ Area / Controller / Action / ID)。有什么想法吗?

3 个答案:

答案 0 :(得分:12)

我怀疑您的路线没有考虑包含4个部分的网址。尝试添加一个捕获所有路径作为您的最后路径来测试它:

routes.MapRoute("Error404", "{*url}", new {controller = "Error", action = "PageNotFound" } );

在RouteConfig.cs问题中包含(部分)路线也可能有所帮助。

答案 1 :(得分:0)

设置IIS的自定义错误页面:在IIS中右键单击您的网站/虚拟目录 - >属性 - >自定义错误标签 - >将404错误设置为错误页面。

您的自定义错误只会针对符合您的路线规则的内容触发。一旦所有路由规则都失败并且在该路径上找不到页面,它就会将错误传递给IIS。然后,IIS将404规则用于未找到的对象,因此您必须覆盖该规则并将其指向项目中的自定义404。

答案 2 :(得分:-1)

您是否收到了IIS错误页面?试试这个。

  1. 打开IIS,选择您的网站,然后选择“错误页面”选项。
  2. 找到404状态代码,右键单击并转到“编辑功能设置”。
  3. 现在,选择“自定义错误页面”并将“路径类型”更改为URL“执行URL”
  4. 最后,将您的网址作为相对值输入,现在它应该在404错误时重定向到此网址。