2009-03-05 43 views
10

我正在研究IIS6,ASP.NET,VS2008。该网站使用自定义错误处理程序来捕获404错误并提供备用页面。当与形式的URL提出:IIS 404自定义错误不按预期方式工作

http://srv/crimson/articles/index

一切完美的作品。但形式的网址:

http://srv/crimson/blog.aspx

哪里blog.aspx不存在,失败,出现以下消息:

服务器错误/深红“应用程序。说明:HTTP 404 ...

当我尝试调试时,404处理程序中的断点都没有被命中。所以看起来有些东西在早些时候捕捉到这个请求。哪里?如何让它将请求传递给我的处理程序?

编辑 感谢那些回答,但没有任何这些想法的工作。我决定以另一种方式解决问题。

回答

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> 

由于“仅限远程'指定自定义错误仅显示给远程客户端,并且ASP.NET错误显示给本地主机。

1

ASP.Net有它自己的自定义错误配置。

转到您的虚拟目录(Web应用程序)的ASP.Net配置并右键单击 - > ASP.Net - >编辑配置 - >自定义错误。

+0

不确定你的意思。我在虚拟目录中设置了一个自定义错误右键 - >属性 - >自定义错误。这是应该工作,但没有。如果你的意思是别的,我找不到它。 – Jon 2009-03-05 18:46:33

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> 

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

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

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

Response.StatusCode = 404; 
Response.StatusDescription = "Not found"; 
0

也许你得到了500这样重定向404没有被触发。首先你可能会关注这个500错误。

相关问题