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

Jon*_*Jon 10 asp.net iis iis-6

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

HTTP:// SRV /赤红/用品/指数

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

HTTP://srv/crimson/blog.aspx

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

'/ Crimson'应用程序中的服务器错误.描述:HTTP 404 ......

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

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

Roe*_*aar 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>
Run Code Online (Sandbox Code Playgroud)

由于"RemoteOnly"指定仅向远程客户端显示自定义错误,并且向本地主机显示ASP.NET错误.


Zha*_*uid 6

嗯,Assaf是对的,但为了补充他的答案,我需要发布一些代码.

是的,Assaf确实意味着ASP.NET提供了自己的错误处理,通过web.config配置.您可以通过IIS Admin管理单元或直接在web.config文件中进行管理.

在<system.web>元素中,您应该具有:

<customErrors defaultRedirect="sorry.htm" mode="RemoteOnly">
  <error statusCode="404" redirect="NotFound.aspx"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)

您可以为每个HTTP错误代码配置不同的页面,或者让默认重定向处理它们.

你会发现,你确实需要在设置了这些错误页面在IIS自定义错误和ASP.NET配置,否则你会在这种情况下结束-一些网页去你的404,和其他人使用默认您没有自定义.

您还应确保自定义404页面实际返回404标头,以确保搜索引擎等正确对待它.

Response.StatusCode = 404;
Response.StatusDescription = "Not found";
Run Code Online (Sandbox Code Playgroud)