在Azure上部署时,应用程序洞察中没有数据

时间:2019-05-12 09:12:22

标签: azure azure-application-insights

我有一个.net core 2 MVC Web应用程序,该应用程序使用Azure上的应用程序见解。 我还配置了nlog以跟踪应用程序见解。 一切正常,因为我在azure上发现了异常并进行了跟踪,但是当我部署应用程序并在azure上使用它时,它不会对应用程序见解产生任何事件(我只发现了日志文件)。

因此,我尝试在控制器中创建TelemetryClient的实例,并且即使在已部署的实例中,它也可以工作

TelemetryClient tc = new TelemetryClient()
{
    InstrumentationKey = "11111111-2222-3333-4444-555555555555"
};
tc.Context.User.Id = Environment.MachineName;
tc.Context.Session.Id = "session_id";
tc.Context.Device.OperatingSystem = Environment.OSVersion.ToString();
tc.TrackTrace("Privacy page says hello with TelemetryClient");

以下是我的项目的摘要:

appsettings.json

{
  "ApplicationInsights": {
    "InstrumentationKey": "11111111-2222-3333-4444-555555555555"
  }
}

appsettings.Staging.json

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=tcp:dom.database.windows.net,1433;Initial Catalog=dom;Persist Security Info=False;User ID=user;Password=pass;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
  },

  "AllowedHosts": "*",

  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

我在VS和Azure(登台)上定义了相同的ASPNETCORE_ENVIRONMENT值,以确保加载相同的应用程序设置并部署所有文件。

我以这种方式加载配置

var configuration = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddJsonFile($"appsettings.{environmentName}.json", optional: true)
    .AddEnvironmentVariables()              
    .Build();

CreateWebHostBuilder是这个

public static IWebHostBuilder CreateWebHostBuilder(string[] args, IConfiguration config) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext) =>
        {
            //config.AddJsonFile("appsettings.json");
        })
        .UseStartup<Startup>()
        .ConfigureLogging(
            logging =>
            {
                logging.ClearProviders();
                logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
            })
        .UseApplicationInsights() // Enable Application Insights
        .UseNLog();

nlog.config包含

  <extensions>
    <add assembly="Microsoft.ApplicationInsights.NLogTarget" />
  </extensions>
  <targets>
    <target type="ApplicationInsightsTarget" name="aiTarget" />
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Warn" writeTo="aiTarget" />
    <logger name="*" minlevel="Warn" writeTo="f" />
  </rules>

在我看来,配置或InstrumentationKey出了点问题,但我不知道如何检查。

任何想法,或者...有什么方法可以知道如何配置应用程序见解库以便找到一些有用的信息来解决问题?我尝试了远程调试,但不知道要进行什么检查。

1 个答案:

答案 0 :(得分:2)

根据您的描述,我认为您已经在azure门户中设置了另一个应用程序见解键-> Web应用程序->配置->应用程序设置。

请检查您是否这样做:

enter image description here

如果有钥匙,则需要将其删除。或将此代码行AddEnvironmentVariables()放在AddJsonFile()之前,如下所示:

var configuration = new ConfigurationBuilder()
    .AddEnvironmentVariables() //put this before AddJsonFile()
    .AddJsonFile("appsettings.json")
    .AddJsonFile($"appsettings.{environmentName}.json", optional: true)                 
    .Build();

如果您还有其他问题,请告诉我。