我正在研究IIS6,ASP.NET,VS2008。该网站使用自定义错误处理程序来捕获404错误并提供备用页面。当提供以下形式的网址时:
http://srv/crimson/articles/index
一切都很完美。但是形式的网址:
如果blog.aspx不存在,则会失败并显示以下消息:
当我尝试调试时,我的404处理程序中没有任何断点被命中。所以似乎有些事情正在赶上请求。哪里?如何让它将请求传递给我的处理程序?
修改 感谢那些回答的人,但这些想法都没有奏效。我决定以另一种方式解决这个问题。
答案 0 :(得分:10)
你可能想试试这个:
在IIS6中:
修改的
那是怎么回事: http://msdn.microsoft.com/en-us/library/h0hfz6fc(VS.80).aspx
<customErrors defaultRedirect="sorry.htm" mode="On">
<error statusCode="404" redirect="NotFound.aspx"/>
</customErrors>
由于“RemoteOnly”指定仅向远程客户端显示自定义错误,并且向本地主机显示ASP.NET错误。
答案 1 :(得分:6)
是的,Assaf确实意味着ASP.NET提供了自己的错误处理,通过web.config配置。您可以通过IIS Admin管理单元或直接在web.config文件中进行管理。
在&lt; system.web&gt;内你应该拥有的元素:
<customErrors defaultRedirect="sorry.htm" mode="RemoteOnly">
<error statusCode="404" redirect="NotFound.aspx"/>
</customErrors>
您可以为每个HTTP错误代码配置不同的页面,或让默认重定向处理它们。
你会发现你确实需要在两者 IIS自定义错误和ASP.NET配置中设置这些错误页面,否则你最终会遇到这种情况 - 一些页面转到404,其他页面使用您未自定义的默认值。
您还应确保自定义404页面实际返回404标头,以确保搜索引擎等正确对待它。
Response.StatusCode = 404;
Response.StatusDescription = "Not found";
答案 2 :(得分:1)
ASP.Net有自己的自定义错误配置。
转到虚拟目录(Web应用程序)的ASP.Net配置,然后右键单击 - &gt; ASP.Net - &gt;编辑配置 - &gt;自定义错误。
答案 3 :(得分:0)
也许你有一个500,所以没有触发404的重定向。您最初可能会关注此500错误。