我在Asp.net 4.0 / vb.net中使用路由,如下所示:
rotas.MapPageRoute("test", "test/{detail}/{id}", "~/test/test.aspx")
在web.config中设置了customErrors:
<customErrors defaultRedirect="ErrorPage.htm" mode="On">
<error statusCode="404" redirect="Error404.htm"/>
</customErrors>
如果在不使用路由的情况下提交了无效的网址,则会正确显示404错误页面。示例:site / defaul2.aspx。
但是如果我输入一个无效的网址,使用像site / test2 / anything / 123这样的路由,则会出现标准的asp.net 404错误页面,而不是我的404自定义页面(Error404.htm)。
答案 0 :(得分:0)
如果您使用的是IIS7,则可能还必须在那里指定自定义错误页面。
单击该站点并选择“错误页面”(在IIS列表中)并更改404和500的条目。
这不是我在IIS6中必须执行的步骤,但是II6确实需要URL路由的通配符处理程序,因此ASP.NET处理了对非本机文件(即jpg,png,pdf等)的请求。 IIS7默认执行此操作,但根据我的经验,不会将这些资产推送到ASP.NET错误页面 - 这就是您必须明确设置这些错误页面的原因。