.net的Web请求监视

时间:2013-11-27 04:40:55

标签: c# asp.net visual-studio iis-7 monitoring

问题背景

我很少使用Microsoft .net framework 4.0开发并在IIS 7.0上运行的Web应用程序。现在我需要跟踪流量信息(请求的用户,IP,应用程序名称,地址,请求时间等等)。所有这些应用程序并持久存储在数据库或文本文件等中。

当我在搜索这个时,我发现了HTTP处理程序的概念。

这方便使用我的情况吗?或者有没有其他方法可以满足我的要求?

我需要将此组件编写为插件。因为我需要将此组件轻松连接到其他Web应用程序。

欣赏您的想法

1 个答案:

答案 0 :(得分:1)

使用HttpModule通过BeginRequest事件拦截所有请求,如下所示:

public class RequestLoggingModule : IHttpModule
{
    private HttpApplication httpApp;

    public void Init(HttpApplication httpApp)
    {
        this.httpApp = httpApp;
        httpApp.BeginRequest += new EventHandler(OnBeginRequest);
    }

    void OnBeginRequest(object sender, EventArgs e)
    {
        // Get the user that made the request
        HttpApplication application = (HttpApplication)sender;
        HttpResponse response = application.Context.Response;

        WindowsIdentity identity = 
           (WindowsIdentity)application.Context.User.Identity;

        LogInformation(identity.Name);

        // Do this for other information you want to log here

    }

    private void LogInformation(string data)
    {
        EventLog log = new EventLog();
        log.Source = "Application XYZ Request Logging";
        log.WriteEntry(data, EventLogEntryType.Information);
    }

    public void Dispose()
    {

    }
}