我很少使用Microsoft .net framework 4.0开发并在IIS 7.0上运行的Web应用程序。现在我需要跟踪流量信息(请求的用户,IP,应用程序名称,地址,请求时间等等)。所有这些应用程序并持久存储在数据库或文本文件等中。
当我在搜索这个时,我发现了HTTP处理程序的概念。
这方便使用我的情况吗?或者有没有其他方法可以满足我的要求?
我需要将此组件编写为插件。因为我需要将此组件轻松连接到其他Web应用程序。
欣赏您的想法
答案 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()
{
}
}