在HttpModule中更新的PerformanceCounters没有在PerfMon中更新

时间:2014-06-04 18:27:17

标签: asp.net httpmodule performancecounter

我正在尝试将PerformanceCounter日志记录添加为WebForms应用程序的一部分。我正在尝试移植一个MVC实现,该实现使用ActionFilters将每个控制器操作的请求持续时间写入自定义性能计数器实例here

我的实现是编写一个HttpModule,它记录OnBeginRequest和OnEndRequest以写入这些自定义性能计数器。但是,当我在PerfMon中查看时,我可以看到我的计数器的实例显示在PerfMon中,但值都是空的(" ------")。

我正在使用以下代码初始化性能计数器:

var counter = new PerformanceCounter {
    CategoryName = categoryName,
    CounterName = counterName,
    InstanceName = instanceName,
    ReadOnly = false,
    InstanceLifetime = PerformanceCounterInstanceLifetime.Process,
    RawValue = 0,
};

即使我没有更新该值,我也会假设Last值为0,但它是' -------'。

与文章相关的示例中的代码确实有效并使用相同的语法。我注意到MVC属性写的计数器没有' Parent'但是由WebForms模块创建的那些具有指定的父级。我不知道这与它有什么关系。

我已检查过以确保事件日志中没有记录任何错误。我很感激为什么我的性能计数器没有更新的指导。

由于

更新2014年6月5日 我发现问题是' /'在实例名称中,它被转换为父/实例,一旦创建就无法找到。确保清理实例名称以确保不存在正斜杠,或者您无法更新值。

1 个答案:

答案 0 :(得分:0)

我发现问题是我分配的实例名称中的正斜杠('/'),它被拆分为父/实例,一旦创建就无法找到。确保清理实例名称以确保不存在正斜杠,否则您将无法更新性能计数器的值。