我已经按如下方式配置了ASP.NET应用程序:
<customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx"/>
当我浏览到〜/ Error.aspx文件时,服务器返回200并呈现页面。但是,如果用户被重定向到错误页面,则会在路径中附加查询字符串:
/Error.aspx?aspxerrorpath=/Test.aspx
但是每当使用此查询字符串时,服务器都不会呈现错误页面,而是使用服务器的自定义错误页面返回404,而不是Error.aspx
为什么web.config设置不会导致〜/ Error.aspx呈现?
答案 0 :(得分:2)
我相信我已经找到了问题所在。由于最近的ASP.NET安全漏洞(see Scott Guthrie's post),建议的操作之一是放入一个URLScan规则,禁止任何带有“aspxerrorpath =”的查询字符串的URL。所以你的网址在进入ASP.NET之前就会被切断,并返回默认的404.
要检查这是否是您的问题,您可以将“aspxerrorpath = xx”添加到您网站上的任意页面网址,并且它应该返回404错误。
现在已发布修补程序以修复asp.net中的此漏洞,您应该能够摆脱该规则,然后您的错误页面重定向应该再次起作用。