我可以在使用 httpErrors 时告诉 IIS 8.5 return 404 吗?
Can I tell IIS 8.5 to return a 404 when using httpErrors?
我正在使用 IIS 8.5 开发一个(Web 表单)站点 运行,目前正在为 404 和 500 设置错误处理。
我已经有了 system.web
> customErrors
设置,但是由于我们 运行 在 IIS 的集成 mode/newer 版本中,它是从 system.webServer
中提取的> httpErrors
.
使用 IIS GUI,我选择用站点上的静态 HTML 文件替换标准 IIS 错误页面:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath=""
path="/problem.html" responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" prefixLanguageFilePath=""
path="/problem.html" responseMode="ExecuteURL" />
</httpErrors>
不幸的是,虽然显示了正确的错误页面,但返回的不是 404,而是 200,对于 500 个错误,返回 302 后跟 200。
对于旧版本的 IIS,或者那些不在集成模式下 运行 的 IIS,您可以在 customErrors
元素上设置 redirectMode="ResponseRewrite"
,这将解决这个问题。
我尝试将 httpErrors
上的 existingResponse
设置为所有三个可用选项,并尝试更新设置 responseMode="File"
,但这些都没有改变。
有什么方法可以为 httpErrrors
element 做类似的事情吗?还是我坚持将错误指向 ASP.NET 页面并从那里返回适当的错误?
谢谢!
要解决此问题,您可以将此配置设置到 WebConfig 文件中的 <httpErrors>
中。像这样:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<clear/>
<error statusCode="404" path="/WebForms/Index.aspx" responseMode="File"/>
</httpErrors>
<system.webServer/>
responseMode=File
会保留原来的错误代码,显示静态页面。
我正在使用 IIS 8.5 开发一个(Web 表单)站点 运行,目前正在为 404 和 500 设置错误处理。
我已经有了 system.web
> customErrors
设置,但是由于我们 运行 在 IIS 的集成 mode/newer 版本中,它是从 system.webServer
中提取的> httpErrors
.
使用 IIS GUI,我选择用站点上的静态 HTML 文件替换标准 IIS 错误页面:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath=""
path="/problem.html" responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" prefixLanguageFilePath=""
path="/problem.html" responseMode="ExecuteURL" />
</httpErrors>
不幸的是,虽然显示了正确的错误页面,但返回的不是 404,而是 200,对于 500 个错误,返回 302 后跟 200。
对于旧版本的 IIS,或者那些不在集成模式下 运行 的 IIS,您可以在 customErrors
元素上设置 redirectMode="ResponseRewrite"
,这将解决这个问题。
我尝试将 httpErrors
上的 existingResponse
设置为所有三个可用选项,并尝试更新设置 responseMode="File"
,但这些都没有改变。
有什么方法可以为 httpErrrors
element 做类似的事情吗?还是我坚持将错误指向 ASP.NET 页面并从那里返回适当的错误?
谢谢!
要解决此问题,您可以将此配置设置到 WebConfig 文件中的 <httpErrors>
中。像这样:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<clear/>
<error statusCode="404" path="/WebForms/Index.aspx" responseMode="File"/>
</httpErrors>
<system.webServer/>
responseMode=File
会保留原来的错误代码,显示静态页面。