【发布时间】:2022-07-23 19:48:26
【问题描述】:
我有一个 .NET Core 3.1 控制台应用程序,并希望使用 appsettings.json 中指定的连接字符串对其进行配置。
这是测试应用的代码:
static void Main(string[] args)
{
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
// To be able to read configuration from .json files
var configuration = configurationBuilder.Build();
// Create the DI container.
IServiceCollection services = new ServiceCollection();
services.AddApplicationInsightsTelemetryWorkerService();
// Build ServiceProvider.
IServiceProvider serviceProvider = services.BuildServiceProvider();
// Obtain TelemetryClient instance from DI, for additional manual tracking or to flush.
var telemetryClient = serviceProvider.GetRequiredService<TelemetryClient>();
telemetryClient.TrackTrace("Hello, world 3!");
// Explicitly call Flush() followed by sleep is required in Console Apps.
// This is to ensure that even if application terminates, telemetry is sent to the back-end.
telemetryClient.Flush();
Task.Delay(5000).Wait();
}
问题在于 Application Insight 似乎没有拾取连接字符串。我在 Application Insights 中看不到任何跟踪消息。如果我将检测密钥传递给 AddApplicationInsightsTelemetryWorkerService 它可以工作。
这是appsettings.json的内容:
{
"ApplicationInsights": {
"ConnectionString": "<my connection string>"
}
}
我错过了什么?
【问题讨论】:
-
您需要在 appsettings.json 的 ApplicationInsights 中提及 InstrumentationKey。即 { "ApplicationInsights": { "InstrumentationKey": "
" } } 。也尝试检查azuredevopslabs.com/labs/vsts/monitor/… -
@SwethaKandikonda-MT 根据文档,使用连接字符串而不仅仅是检测密钥是可行的。但是,我确实想念如何从我的代码中获取该配置设置。 docs.microsoft.com/en-us/azure/azure-monitor/app/…
标签: .net-core console-application azure-application-insights