我正在编写一个ETW消费者,以监听ASP.NET事件。在我的Windows 2008服务器上,我已经有了以下示例代码,并可以看到ASP.NET提供程序的信息。但是,在我的Win7(64)个人电脑上,我没有看到ASP.NET提供程序,因此此代码显示所有事件为“未处理”。
我已经确保跟踪功能已安装,并且applicationhost.config文件中包含了相应的值。
当我执行logman –query providers命令时,在我的PC上我没有找到ASP.NET AFF081FE-0247-4275-9C4E-021F3DC1DA35提供程序,但在我测试的Win2008服务器上可以找到此提供程序。
我如何执行以下两项操作之一: 1. 将其添加为Win7 PC的提供程序? 2. 让代码能够处理此消息并在我的代码中提供清单。當我将“AFF081FE-0247-4275-9C4E-021F3DC1DA35”设置为提供程序时,我确实收到事件,但它们来自未知的提供程序。所以我猜测缺少清单内容。
以下是我的示例代码:
我已经确保跟踪功能已安装,并且applicationhost.config文件中包含了相应的值。
当我执行logman –query providers命令时,在我的PC上我没有找到ASP.NET AFF081FE-0247-4275-9C4E-021F3DC1DA35提供程序,但在我测试的Win2008服务器上可以找到此提供程序。
我如何执行以下两项操作之一: 1. 将其添加为Win7 PC的提供程序? 2. 让代码能够处理此消息并在我的代码中提供清单。當我将“AFF081FE-0247-4275-9C4E-021F3DC1DA35”设置为提供程序时,我确实收到事件,但它们来自未知的提供程序。所以我猜测缺少清单内容。
以下是我的示例代码:
static void Test3()
{
var sessionName = "ASPNETMonitorSession";
using (var session = new TraceEventSession(sessionName, null))
{
Console.WriteLine("Starting Test1");
session.StopOnDispose = true;
Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e)
{
session.Dispose();
};
using (var source = new ETWTraceEventSource(sessionName, TraceEventSourceType.Session))
{
Action<TraceEvent> action = delegate(TraceEvent data)
{
Console.WriteLine("GOT EVENT: " + data.ToString());
};
var registeredParser = new RegisteredTraceEventParser(source);
registeredParser.All += action;
source.UnhandledEvents += delegate(TraceEvent data)
{
if ((int)data.ID != 0xFFFE)
Console.WriteLine("GOT UNHANDLED EVENT: " + data.Dump());
};
session.EnableProvider(new Guid("AFF081FE-0247-4275-9C4E-021F3DC1DA35"));
Console.WriteLine("Starting Listening for events");
source.Process();
}
}
Console.WriteLine("Done");
return;
}