我已将我的应用程序配置为通过web.config
中的以下条目显示自定义错误页面:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<clear />
<error
statusCode="401"
path="/Static/Unauthorized.html"
responseMode="ExecuteURL" />
<error
statusCode="404"
path="/Static/NotFound.html"
responseMode="ExecuteURL" />
<error
statusCode="500"
path="/Static/Internal.html"
responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
这很好。但是,在我的生产环境中,可以通过附加路径的代理来访问此应用程序:
Locally: https://example.org/Controller/Action
Remote: https://proxy.example.org/application-name/Controller/Action
因此现在错误页面不再可用,因为该路径指向根目录。
我尝试过/考虑过的事情:
[ErrorHandling]
属性而不是web.config-据我了解,该属性仅对抛出的异常进行过滤,而对于一般的状态代码不进行过滤(这应该是一些直接的东西)对于仅使用return HttpStatusCodeResult()
方法的相当大的旧版代码库)如何让IIS根据应用程序的根URL解析错误页面的动态路径?
PS:我知道该方法会丢弃错误代码并返回带有代码200的错误页面。尽管它与标准不符,但在我的情况下还可以,甚至适度有用,因为代理不以这种方式参与错误处理。