为什么aspxerrorpath查询字符串出现后,ASP.NET错误页面会立即返回404?

时间:2010-11-04 13:36:51

标签: asp.net

我已经按如下方式配置了ASP.NET应用程序:

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

当我浏览到〜/ Error.aspx文件时,服务器返回200并呈现页面。但是,如果用户被重定向到错误页面,则会在路径中附加查询字符串:

/Error.aspx?aspxerrorpath=/Test.aspx

但是每当使用此查询字符串时,服务器都不会呈现错误页面,而是使用服务器的自定义错误页面返回404,而不是Error.aspx

为什么web.config设置不会导致〜/ Error.aspx呈现?

1 个答案:

答案 0 :(得分:2)

我相信我已经找到了问题所在。由于最近的ASP.NET安全漏洞(see Scott Guthrie's post),建议的操作之一是放入一个URLScan规则,禁止任何带有“aspxerrorpath =”的查询字符串的URL。所以你的网址在进入ASP.NET之前就会被切断,并返回默认的404.

要检查这是否是您的问题,您可以将“aspxerrorpath = xx”添加到您网站上的任意页面网址,并且它应该返回404错误。

现在已发布修补程序以修复asp.net中的此漏洞,您应该能够摆脱该规则,然后您的错误页面重定向应该再次起作用。