IIS 404自定义错误无法按预期工作

时间:2009-03-05 17:50:05

标签: asp.net iis iis-6

我正在研究IIS6,ASP.NET,VS2008。该网站使用自定义错误处理程序来捕获404错误并提供备用页面。当提供以下形式的网址时:

http://srv/crimson/articles/index

一切都很完美。但是形式的网址:

http://srv/crimson/blog.aspx

如果blog.aspx不存在,则会失败并显示以下消息:

当我尝试调试时,我的404处理程序中没有任何断点被命中。所以似乎有些事情正在赶上请求。哪里?如何让它将请求传递给我的处理程序?

修改 感谢那些回答的人,但这些想法都没有奏效。我决定以另一种方式解决这个问题。

4 个答案:

答案 0 :(得分:10)

你可能想试试这个:

在IIS6中:

  • 为您的网站打开“属性”
  • 转到“主目录”标签
  • 点击“配置”
  • 寻找扩展名“.aspx”
  • 点击“编辑”
  • 选中“验证文件存在”的复选框

修改

那是怎么回事: 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错误。