IIS:如何记录非ASPX 404?

时间:2010-06-04 05:16:05

标签: iis iis-6 iis-5

我有很多未被记录的断链。有没有办法设置IIS通过ASP.NET发送它,以便我正常的404日志记录例程捕获它们?

2 个答案:

答案 0 :(得分:1)

您可以在IIS 6 hack方法上使用主机MVC。基本上,在IIS中设置通配符。*映射并让aspnet_isapi.dll处理此请求,这与.NET处理所有请求相同。您可能会遇到性能下降(可能是最小的),但它应该会达到您的日志记录程序。

IIS 6 Hack

答案 1 :(得分:1)

如果您使用的是IIS7,则可以使用httpErrors配置元素。这样做(在处理请求之后)它检查已推送到输出的响应代码,并允许您拦截调用,例如:

<httpErrors existingResponse="PassThrough">
    <remove statusCode="404" />
    <error statusCode="404" responseMode="ExecuteURL" path="/PageNotFound.aspx" />
</httpErrors>

这很像ASP.NET的customErrors机制,除了稍后在管道中处理。在上面的例子中,我告诉它在遇到404时执行URL /PageNotFound.aspx。你必须小心,因为如果你从PageNotFound.aspx页面发送404(通常你会!),它可以陷入循环重定向。为此,我们添加以下属性:

existingResponse="PassThrough"

这样做是为了确定当前响应是否已经有一个正文,如果是,则传递它(不处理状态代码)。

我刚才在博客上发布了这个:http://www.fidelitydesign.net/?p=21

希望有所帮助:)

相关问题