Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MVC应用程序中的应用程序洞察创建自定义性能计数器(每个控制器操作的单独实例)_C#_Asp.net Mvc_Azure_Azure Application Insights - Fatal编程技术网

C# 使用MVC应用程序中的应用程序洞察创建自定义性能计数器(每个控制器操作的单独实例)

C# 使用MVC应用程序中的应用程序洞察创建自定义性能计数器(每个控制器操作的单独实例),c#,asp.net-mvc,azure,azure-application-insights,C#,Asp.net Mvc,Azure,Azure Application Insights,我已经阅读了文档(请参阅标题“在代码中收集性能计数器”),下面是相关的代码片段。 (收集性能计数器并将其发送到具有自定义指标的Application Insights) 假设我想为每个控制器操作的平均延迟设置一个计数器。因此,现在计数器类别将是“ActionSpecificCounters”,实例将是一个包含控制器操作组合的字符串,计数器名称可以是“ActionLatency”。 现在,我的问题是: 问题1: 当我在应用程序启动时不知道所有可能的计数器实例(控制器操作组合)时,如何添加文档片段中

我已经阅读了文档(请参阅标题“在代码中收集性能计数器”),下面是相关的代码片段。 (收集性能计数器并将其发送到具有自定义指标的Application Insights)

假设我想为每个控制器操作的平均延迟设置一个计数器。因此,现在计数器类别将是“ActionSpecificCounters”,实例将是一个包含控制器操作组合的字符串,计数器名称可以是“ActionLatency”。 现在,我的问题是:

问题1: 当我在应用程序启动时不知道所有可能的计数器实例(控制器操作组合)时,如何添加文档片段中的新计数器?有没有办法在运行中添加它们(我想我不能多次调用Initialize?)? 我知道OnActionExecut(ed/ing)中的控制器操作组合

问题2: 我假设我必须首先为每个控制器操作组合创建一个自定义度量,然后才能在上面添加计数器?如何将自定义计数器链接到基础自定义度量? 对于自定义度量,我可以执行以下操作:

var controllerActionLatencyMetricName = controllerName + "-" actionName + "-Latency";
telemetry.TrackMetric(controllerActionLatencyMetricName, latency);
但是,如何在这个度量之上添加自定义计数器呢

perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
  @"what-do-I-put-here?",controllerActionLatencyMetricName));
我是否应该使用度量名称(controllerActionLatencyMetricName)作为实例名称,生成如下字符串

@"\ActionSpecificCounters("+controllerActionLatencyMetricName+")\ActionLatency"
@"\ActionSpecificCounters("+controllerActionLatencyMetricName+")\ActionLatency"