【发布时间】:2015-07-03 01:51:04
【问题描述】:
我正在编写一个 ETW 消费者来监听 ASP.NET 事件。下面的示例代码在可以看到 ASP.NET 提供程序的 Windows 2008 服务器上运行良好。我遇到的问题是在我的 Win7 (64) PC 上,我看不到 ASP.NET 提供程序,因此此代码将所有事件显示为“未处理”。 我已确保已安装跟踪功能并且 applicationhost.config 文件中包含相应的值。
当我执行 logman –query providers 时,我看不到 ASP.NET AFF081FE-0247-4275-9C4E-021F3DC1DA35 提供程序在 PC 上,但我在我正在测试的 Win2008 服务器上看到了这个。
如何执行以下两项之一: 将此作为提供程序添加到我的 Win7 PC 吗?
或
让代码能够处理此消息并在我的代码中提供清单。当我将“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;
}
【问题讨论】:
标签: asp.net trace provider etw