1

我有一个在 IIS 7/Win2K8 标准上运行的 ASP .Net Web 应用程序。

我需要帮助:

当用户在客户端(浏览器)发出请求时,我想在请求对象到达后立即检查服务器上的请求对象(用于记录目的)。

特别是我想记录,至少:

  1. 请求的时间。
  2. 请求的 IP 地址。
  3. 请求的大小(以字节为单位)。

同样,我想记录为同一请求呈现的响应的大小。

该请求可以是整个页面请求或部分更新(更新面板)请求。

非常有义务提供任何帮助。

感谢期待。

4

2 回答 2

2

处理 Global.asax 文件中的 Application_BeginRequest 事件。像这样的东西:

public void Application_BeginRequest(Object sender, EventArgs e) {
     yourLogger.Log(String.Format("Request Time: {0}, Request IP: {1}, Request Size: {2}",
                                  Date.Now.Time,
                                  Request.UserHostAddress,
                                  Request.TotalBytes)
}
于 2012-07-20T07:02:10.093 回答
1

除了@just.another.programmer 的答案,我想推荐另一种方法

如果您想完全确定即使发生未处理的异常也会实际记录每个请求和响应,那么您应该考虑使用:LogRequest事件或PostLogRequest

来自 MSDN

在 ASP.NET 为当前请求执行任何日志记录之前发生。

即使发生错误,也会引发 LogRequest 事件。您可以为 LogRequest 事件提供事件处理程序,以便为请求提供自定义日志记录。

要使用此事件,您的应用程序必须在 IIS 7.0 和 .NET Framework 3.0 或更高版本中以集成模式运行。

这些事件在请求生命周期结束时发生:

参考:

于 2012-07-20T07:11:12.647 回答