在IIS 7中使用existingResponse =“PassThrough”时,如何显示静态文件的错误页面

时间:2013-02-22 14:27:30

标签: iis umbraco custom-error-pages

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

<httpErrors existingResponse="PassThrough" />

它适用于从Umbraco显示自定义404错误页面,但是当找不到静态文件时,它不能用于显示404错误页面。

例如http://www.example.com/non-existing-file.png会返回404状态代码,但响应为空。这符合PassThrough模式的描述:

  

PassThrough - 如果existingResponse被视为“PassThrough”,则自定义   错误模块将始终通过模块的响应。这个   如果模块,设置将使自定义错误模块返回空白响应   不要设置任何文字。   (http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx

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

更新

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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