0

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

4

2 回答 2

1

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

IIS 6 黑客

于 2010-06-04T05:22:10.250 回答
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

希望有帮助:)

于 2010-06-04T06:30:48.237 回答