从 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中的数据了
我有一个 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中的数据了