文件上说
existingResponse="PassThrough"
如果存在现有响应,则保持响应不变。http://www.iis.net/configreference/system.webserver/httperrors#005
但这意味着“现有的反应存在”是什么意思呢?
例如,我希望我的customErrors
处理程序能够抑制ASP.NET响应,这样IIS就会认为这个响应不存在。我该怎么做?
发布于 2015-06-25 05:13:02
模式中有三个可能的值:
<attribute name="existingResponse" type="enum" defaultValue="Auto">
<enum name="Auto" value="0" />
<enum name="Replace" value="1" />
<enum name="PassThrough" value="2" />
</attribute>
粗略地说,我是如何理解这一点的:
PassThrough --只要有响应,就不使用现有的响应。您的应用程序逻辑可能不会返回任何内容。在这种情况下,将使用此处定义的错误页。
Auto -使用此节点中定义的IIS错误页,但在asp.net中设置的除外:
Response.TrySkipIisCustomErrors = true;
如果您已经这样做了,则使用来自代码的响应。
替换--即使开发人员设置了TrySkipIisCustomErrors
,也总是使用IIS页面。
最后一个选择似乎是你想要的。
编辑:
考虑:
existingResponse="PassThrough"
现在尝试打开一个不存在的asp.net页面,您将看到:
即使资源不在那里,运行时也提供了一个响应,它被传递到浏览器。
现在,尝试打开一个不存在的html页面。这一次,我们仍然得到404状态,但一个空页。
改为:
existingResponse="Auto"
缺少的asp.net页仍然显示asp.net错误页,但是对于缺少的html页面,我们现在得到了IIS:
因此,总结一下:当查看缺少的具有不同existingResponse
值的html和aspx页面时,我们得到了不同的错误页面:
.html-404 .aspx-404 .aspx-500
--------------------------------------------------
Auto IIS asp.net asp.net
PassThrough - asp.net asp.net
Replace IIS IIS IIS
https://stackoverflow.com/questions/31040671
复制相似问题