win7 PC 上的 ASP.NET ETW 提供程序丢失
Posted
技术标签:
【中文标题】win7 PC 上的 ASP.NET ETW 提供程序丢失【英文标题】:The ASP.NET ETW provider on a win7 PC is missing 【发布时间】: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;
【问题讨论】:
【参考方案1】:ASP.NET 跟踪在您的本地计算机上不可用的原因是它没有安装。如果您查看perfview 帮助,它会为您提供有关如何启用它的说明。
仅供参考 perfview 使用TracEevent
来捕获跟踪。
在这里
ASP.NET 事件 ASP.NET 有一组事件,当每个 请求是过程。 PerfView 有一个可以打开的特殊视图 当 ASP.NET 事件打开时。默认情况下,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) -> 滚动服务添加角色 服务运行状况和诊断 -> 跟踪
希望这会有所帮助。
【讨论】:
以上是关于win7 PC 上的 ASP.NET ETW 提供程序丢失的主要内容,如果未能解决你的问题,请参考以下文章
Win7上的ASP.NET MVC3项目在Win10上运行的一个坑
asp.net mvc内微信pc端H5JsApi支付方式总结