IIS 6.0和ASPX中的404自定义错误不起作用

时间:2010-10-05 21:20:47

标签: .net iis http-status-code-404 asp.net

我创建了一个名为404.aspx的404错误页面,当我手动调用它时效果很好。 但在web.config和IIS 6.0中设置“自定义错误”后。它无法正常工作。

例如,如果我以错误的方式输入网址,它将无效,并显示如下所示的消息。

XML Parsing Error: not well-formed
Location: **http://domain/anything** (without an extension)
Line Number 1, Column 2:<%@ page language="C#" masterpagefile="~/Public.master" autoeventwireup="true" inherits="_404, App_We 

而且,如果我输入这样的网址: http://domain/anything.ASPX(添加.ASPX),它会正确地重定向到自定义错误404.aspx并且工作正常。

我可以做些什么来完成这项工作?

2 个答案:

答案 0 :(得分:7)

听起来您已将IIS自定义错误页面类型设置为File而不是Url

设置为File只会导致IIS将错误页面的内容逐字呈现到响应流(即作为静态文件),而不是将HTTP重定向到错误页面,从而导致页面被处理通过ASP.NET。

如果使用URL消息类型,IIS 6要求输入“站点内的绝对URL”,例如:

/404.aspx

答案 1 :(得分:2)

我假设您的语法如下:

<customErrors
       mode="RemoteOnly" 
       defaultRedirect="~/errors/GeneralError.aspx" 
/>

要查看自定义页面,请将模式设置为“开启”

<customErrors
       mode="On" 
       defaultRedirect="~/errors/GeneralError.aspx" 
/>

模式定义如下:

  • 开启 - 错误详细信息不会显示给任何人,甚至是本地用户。如果您指定了自定义错误页面,则会始终使用它。
  • 关闭 - 每个人都会看到本地和远程用户的错误详细信息。如果您指定了自定义错误页面,则不会使用它。
  • RemoteOnly - 本地用户将看到包含堆栈跟踪和编译详细信息的详细错误页面,而远程用户将看到一个简明页面,通知他们发生了错误。如果自定义错误页面可用,它将仅显示给远程用户。