VS2017中的Asp.Net Core和Application Insight - 多种环境

时间:2017-05-12 17:13:04

标签: asp.net-core azure-application-insights

在VS2017之前,可以在代码中将Application Insight集成到Asp.NET Core应用程序中。在VS2017中,只能使用IDE(连接服务)作为" Microsoft.ApplicationInsights.AspNetCore"(2.0.0。)不再提供builder.AddApplicationInsightsSettings(developerMode: true);扩展名。所有相关资源都不适用于VS2017(即https://github.com/Microsoft/ApplicationInsights-aspnetcore/wiki/Getting-Started)。

使用新的VS2017功能"连接服务"时,我们应该如何连接到每个环境的不同Application Insights实例?

1 个答案:

答案 0 :(得分:1)

好的,仍然可以使用ApplicationInsightsServiceOptions手动设置ApplicationInsights。以下是源代码,如何实际解决设置:

internal static void AddTelemetryConfiguration(IConfiguration config, ApplicationInsightsServiceOptions serviceOptions)
{
  string str1 = config["APPINSIGHTS_INSTRUMENTATIONKEY"];
  if (string.IsNullOrWhiteSpace(str1))
    str1 = config["ApplicationInsights:InstrumentationKey"];
  if (!string.IsNullOrWhiteSpace(str1))
    serviceOptions.InstrumentationKey = str1;
  string str2 = config["APPINSIGHTS_DEVELOPER_MODE"];
  if (string.IsNullOrWhiteSpace(str2))
    str2 = config["ApplicationInsights:TelemetryChannel:DeveloperMode"];
  if (!string.IsNullOrWhiteSpace(str2))
  {
    bool result = false;
    if (bool.TryParse(str2, out result))
      serviceOptions.DeveloperMode = new bool?(result);
  }
  string str3 = config["APPINSIGHTS_ENDPOINTADDRESS"];
  if (string.IsNullOrWhiteSpace(str3))
    str3 = config["ApplicationInsights:TelemetryChannel:EndpointAddress"];
  if (!string.IsNullOrWhiteSpace(str3))
    serviceOptions.EndpointAddress = str3;
  string str4 = config["version"];
  if (string.IsNullOrWhiteSpace(str4))
    return;
  serviceOptions.ApplicationVersion = str4;
}

因此,您可以看到具有最高优先级的环境变量。您可以在Azure应用程序设置中设置APPINSIGHTS_INSTRUMENTATIONKEY变量,它将被选中。

如果使用VS2017连接服务设置,它会将其配置存储到csprojappsettings.json(InstrumentationKey)和/Connected Services/Application Insights/ConnectedServices.json