一个Win7电脑上缺少ASP.NET ETW提供程序

4
我正在编写一个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”设置为提供程序时,我确实收到事件,但它们来自未知的提供程序。所以我猜测缺少清单内容。
以下是我的示例代码:
    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;
    }
1个回答

0
ASP.NET跟踪在您的本地计算机上不可用的原因是因为它没有安装。如果您查看perfview帮助,它会给出启用它的说明。
FYI,perfview使用TracEevent来捕获跟踪信息。
就是这样。
ASP.NET 事件
ASP.NET 每处理一个请求会发送一组事件。当打开 ASP.NET 事件时,PerfView 有一个特殊的视图可以使用。默认情况下,PerfView 打开 ASP.NET 事件,但是您必须在安装 ASP.NET 时选择“跟踪”选项才能使这些事件正常工作。因此,如果您没有看到 ASP.NET 事件,则运行 ASP.NET 场景可能是您无法获取数据的一个原因。
打开 ASP.NET 跟踪
最简单的打开跟踪的方法是使用操作系统附带的 DISM 工具。从高级命令提示符中运行以下命令:DISM /online /Enable-Feature /FeatureName:IIS-HttpTracing注意,该命令将重新启动 Web 服务(以便其生效),如果您的 ASP.NET 服务处理长时间(多秒钟)的请求,则可能会引起问题。这将迫使 DISM 延迟(等待重启)或中止未完成的请求。因此,建议您在其他服务器维护任务计划中安排此操作。一旦在特定机器上完成此配置,则持久存在。您也可以通过手动使用 GUI 界面执行此配置。首先,您需要进入用于配置 Windows 软件的对话框。这取决于您是否在客户端或服务器版本的操作系统上。
客户端 - 开始 -> 控制面板 -> 程序 -> 程序和功能 -> 打开或关闭 Windows 功能 - > Internet 信息服务 -> 万维网服务 -> 健康和诊断 -> 跟踪
服务器 - 开始 -> 计算机 -> 右键单击 -> 管理角色 -> Web 服务器(IIS)-> 添加角色服务健康和诊断 - > 跟踪
希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接