从 ASP.NET CORE WEB API 添加对应用程序见解的请求

Add requests to application insights from ASP.NET CORE WEB API

我有一个 API 项目,我在 Azure Web 应用程序中已经 运行 一段时间了。但是,我在应用程序洞察中的请求 table 中没有看到任何请求。我错过了什么吗?

Startup.cs:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using VendorFormAPI.Authentication;
using VendorFormAPI.Extensions;
using VendorFormData.Repositories;


namespace VendorFormAPI
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }


        public void ConfigureServices(IServiceCollection services)
        {
            services.AddApplicationInsightsTelemetry();            
            var dbConnStr = Configuration["Values:DBConnection"];

            services.AddTransient<VendorFormRepo, VendorFormRepo>((ctx) =>
            {

                var vfRepo = new VendorFormRepo(dbConnStr);
                return vfRepo;
            });

            services.AddTransient<FilesRepo, FilesRepo>((ctx) =>
            {
                var strgConnStr = Configuration["Values:StorageConnection"];
                var vfFilesRepo = new FilesRepo(strgConnStr, dbConnStr);
                return vfFilesRepo;
            });

            services.AddCors(options =>
            {
                options.AddDefaultPolicy(
                    builder =>
                    {
                        builder.WithOrigins("http://localhost:3000").AllowAnyHeader().AllowAnyMethod();
                    });
            });

            services.AddControllers();
            services.AddAuthentication(o => o.AddScheme("ApiKey", a => a.HandlerType = typeof(ApiKeyAuthenticationHandler)));         
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.ConfigureExceptionHandler();

            app.UseHttpsRedirection();

            app.UseRouting();
            app.UseCors(); // second

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
}

appsettings.cs:

{
  "Logging": {
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Trace",
        "System": "None",
        "Microsoft": "None"
      }
    }
  },
  "ApplicationInsights": {
    "Instrumentationkey": "xx-xx-4687-b1fc-xx"
  },
  "AllowedHosts": "*",
  "Values": {      
        }
}

Azure 中的配置: 已设置:APPINSIGHTS_INSTRUMENTATIONKEY=xxx

没有向 Application Insights 实例发送任何内容的原因有很多:

1.Please 检查 INSTRUMENTATIONKEY 是否正确。

2.Sometimes,人们拥有超过 1 个 Application Insights。他们可能使用 INSTRUMENTATIONKEY 为 Application_Insights_1 发送数据,但在 Application_Insights_2.

中检查结果

3.Update Application Insights 的包,如果没有特殊要求,要最新的。

4.Check 你的代码看看是否有一些用于过滤日志的过滤逻辑。

5.Log级别设置不正确,如设置为None

6.Check 如果在 Azure 门户或您的代码中启用了采样。

7.Check 您的应用见解 Daily cap settings。如果达到限制,数据可能会被丢弃。

这里有一些建议:

1.You最好在本地 运行 项目。例如,您可以在visual studio中运行,并在visual studio中检查输出window。如果发送了数据,您可以在输出 window 中看到它们正确 INSTRUMENTATIONKEY.

2.If已经部署到azure上了,马上就可以看到Live metrics中的数据了