如何在使用existingResponse=";时显示静态文件的错误页面;“直通”;在iis7中

如何在使用existingResponse=";时显示静态文件的错误页面;“直通”;在iis7中,iis,umbraco,custom-error-pages,Iis,Umbraco,Custom Error Pages,为了使我的应用程序(Umbraco CMS)能够处理404错误,我需要在我的web.config中设置以下设置: <httpErrors existingResponse="PassThrough" /> 它可以很好地显示来自Umbraco的自定义404错误页面,但在找不到静态文件时无法显示404错误页面 例如,返回404状态代码,但response为空。这与直通模式的描述相符: PassThrough–如果existingResponse被视为“PassThrough”,则自

为了使我的应用程序(Umbraco CMS)能够处理404错误,我需要在我的web.config中设置以下设置:

<httpErrors existingResponse="PassThrough" />

它可以很好地显示来自Umbraco的自定义404错误页面,但在找不到静态文件时无法显示404错误页面

例如,返回404状态代码,但response为空。这与直通模式的描述相符:

PassThrough–如果existingResponse被视为“PassThrough”,则自定义 错误模块将始终传递来自模块的响应。这 设置将使自定义错误模块返回空白响应,如果模块 不要设置任何文本。 ()

什么是“自定义错误模块”?我如何让它返回一个非空的响应

更新

通过Umbraco中的请求处理例程(使用调试器),我对问题空间有了更好的理解。如上面引文中所述,当existingResponse=“PassThrough”时,所有http错误的处理都在自定义模块中完成。因此,为了回答我自己的问题,“自定义错误模块”在本例中是“UmbracoModule”

解决此问题的一种方法是创建一个新的自定义模块,该模块将检查磁盘上是否存在静态文件。这可以做得很好,我从IIS中读取静态文件列表,并从web.config中读取customErrors或httpErrors元素的配置,以获得一个自定义错误页面。但我认为这是一个粗糙的解决方案。我宁愿把责任推回给非法入境者


有什么想法吗?

你说得对。为了方便其他寻求帮助的人,这里有一些关于404处理的额外信息

  • -使用文件/config/umbracoSettings.config描述您的解决方案

  • -适用于Umbraco 7,并介绍了标签的使用

  • -固定IIS6及其与IIS7的比较