2010-10-05 54 views
6

我创建了一个名为404.aspx的404错误页面,当我手动调用它时,它非常棒。 但在web.config和IIS 6.0中设置“自定义错误”后。它不能正常工作。IIS 6.0和ASPX 404自定义错误不起作用

例如,如果我以错误的方式键入URL,它将不起作用,并出现如下所示的消息。

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正确工作正常。

我该怎么做才能做到这一点?

+1

莫非与此有关:HTTP://计算器。 com/questions/3704561/custom-error-pages-in-iis-6-0-using-aspx-pages – Castrohenge 2010-10-05 21:25:00

+0

同样的作者也是。 – mxmissile 2010-10-05 21:39:31

回答

7

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

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

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

/404.aspx

+0

这是我试过的冷杉选项。但无论我写什么,都会显示一个黄色标注,并显示以下消息:错误的URL格式。请在网站中输入绝对网址。 – UXdesigner 2010-10-06 13:24:29

+0

如果我在URL中输入任何不带.aspx扩展名的东西,它将显示一条错误消息,如果我键入任何页面名称并添加.aspx扩展名,它将带有nice错误页面。奇怪的事情。不知道还有什么要做。 – UXdesigner 2010-10-06 13:38:56

+0

@UXDesigner - 查看我更新的答案。 – Kev 2010-10-06 15:03:07

2

我假设你的语法如下:

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

要看到自己设置模式的自定义页面为“开”

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

这些模式的定义如下:

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

我在我的web.config UXdesigner 2010-10-05 21:31:32

+0

谢谢,我很快修改了我的webconfig。我添加了这个: 但它几乎相同。 :/ – UXdesigner 2010-10-05 21:39:43

+0

@UXdesigner - 我希望你编辑了现有的customErrors设置,并没有添加第二个。 – Greg 2010-10-05 21:41:51