Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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# 未设置.NET Framework Windows服务器云角色名_C#_Azure Application Insights - Fatal编程技术网

C# 未设置.NET Framework Windows服务器云角色名

C# 未设置.NET Framework Windows服务器云角色名,c#,azure-application-insights,C#,Azure Application Insights,我正在尝试在.NET 4.8 Framework Windows服务(例如控制台应用程序等)中将cloud_RoleName添加到我的Application Insights telemetry中。我正在使用nuget包Microsoft.ApplicationInsights.WindowsServer和ApplicationInsights.config来配置所有内容,但我无法填充角色名 我试着用这个: <TelemetryInitializers> <Add

我正在尝试在.NET 4.8 Framework Windows服务(例如控制台应用程序等)中将cloud_RoleName添加到我的Application Insights telemetry中。我正在使用nuget包Microsoft.ApplicationInsights.WindowsServer和ApplicationInsights.config来配置所有内容,但我无法填充角色名

我试着用这个:

  <TelemetryInitializers>
    <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/> 
  </TelemetryInitializers>
错误-2147024894似乎是“未找到文件”类型的错误


云角色名仍然是空的

好的,我现在有一个让AzureRoleEnvironmentTelemetryInitializer无误加载的解决方案,但不幸的是,它似乎没有填充云角色名,所以我不得不尝试其他方法(见下文)

修复方法是:

1-app.config中的特殊属性

  <startup useLegacyV2RuntimeActivationPolicy="true">
这有助于AzureRoleEnvironmentTelemetryInitializer加载(不再出现错误),但确实解决了我实际遇到的RoleName为空的问题

我必须添加一些自定义代码才能使其正常工作:

public class MyWebTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        telemetry.Context.Cloud.RoleName = "MyRoleName";
    }
}
然后将自定义ITelemetryInitializer添加到ApplicationInsights.config中:

  <TelemetryInitializers>
     <Add Type="MyNamespace.MyWebTelemetryInitializer, FrameworkConsoleApp3"/>
      ...
  </TelemetryInitializers>

...
现在“ai.cloud.role”:“MyRoleName”出现在遥测=喜悦中!这似乎也解决了“应用程序映射”的问题——我不再有一个节点按照上面的图片调用自己了

如果有人能告诉我,我仍然对如何以“正确的方式”做到这一点感兴趣,我将不胜感激

Environment.SetEnvironmentVariable("WEBSITE_SITE_NAME", "UndocumentedEnvironmentVariablesAreNotGreat");
public class MyWebTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        telemetry.Context.Cloud.RoleName = "MyRoleName";
    }
}
  <TelemetryInitializers>
     <Add Type="MyNamespace.MyWebTelemetryInitializer, FrameworkConsoleApp3"/>
      ...
  </TelemetryInitializers>