Ola*_*avT 1 console-application azure-application-insights .net-core
我有一个 .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();
}
Run Code Online (Sandbox Code Playgroud)
问题在于 Application Insight 似乎没有获取连接字符串。我在 Application Insights 中没有看到任何跟踪消息。如果我将检测密钥传递给 AddApplicationInsightsTelemetryWorkerService ,它就会起作用。
这是appsettings.json的内容:
{
"ApplicationInsights": {
"ConnectionString": "<my connection string>"
}
}
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
我不知道问题是否仍然存在,但您可以将连接字符串直接传递到 TelemetryConfiguration。
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
telemetryConfiguration.ConnectionString = Configuration["AzureApplicationInsightsConnectionString"];
Run Code Online (Sandbox Code Playgroud)
或者,您可以将其添加到服务集合中:
var options = new ApplicationInsightsServiceOptions { ConnectionString = Configuration["AzureApplicationInsightsConnectionString"] };
services.AddApplicationInsightsTelemetry(options: options);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6147 次 |
| 最近记录: |