我有很多未被记录的断链。有没有办法设置IIS通过ASP.NET发送它,以便我正常的404日志记录例程捕获它们?
答案 0 :(得分:1)
您可以在IIS 6 hack方法上使用主机MVC。基本上,在IIS中设置通配符。*映射并让aspnet_isapi.dll处理此请求,这与.NET处理所有请求相同。您可能会遇到性能下降(可能是最小的),但它应该会达到您的日志记录程序。
答案 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
希望有所帮助:)