配置应用程序洞察连接字符串的最佳方法是什么?



我有一个Asp.net core 6 Web Api应用程序。

我通过Visual Studio配置了Application Insights,添加了一个服务依赖项,如下所述。我还配置了本地AppSecrets文件来本地存储连接字符串。

现在我注意到在Program.cs中自动生成的代码接受一个变量作为参数:

builder.Services.AddApplicationInsightsTelemetry(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]);

我想知道-这个参数真的需要吗?

当我阅读:

…自动调用services.AddApplicationInsightsTelemetry()从中读取连接字符串应用程序的配置。不需要显式地提供IConfiguration。

如果我在本地环境中删除它,它会正常工作,仍然会向App. Insights发送日志。

两个问题:

  1. 为什么自动生成的代码包含这个参数?
  2. 如果我删除参数-它会导致任何问题,当应用程序部署在测试或生产?

官方文档对所有这些都含糊不清,几句话会增加这么多的清晰度,所以让我试着帮助。

为什么自动生成的代码包含这个参数?

在VS2022中,当集成AppInsights SDK时,APPLICATIONINSIGHTS_CONNECTION_STRING不再作为参数添加,这将是代码行:

builder.Services.AddApplicationInsightsTelemetry();

根据你链接的文档(这里),建议是正确的。如果使用了正确的命名法,Microsoft.Extensions.Configuration.IConfiguration将自动读取连接字符串。例如,如果您已经在Azure中配置了AppInsights,那么您将在应用程序服务的Configuration下看到以下值:

APPLICATIONINSIGHTS_CONNECTION_STRING

一旦部署到每个环境,该值将自动读取;不需要在主源代码本地向appsettings.json添加额外的连接字符串信息。它将允许AppInsights在本地工作和部署,只要这些连接字符串存在于Azure中(在配置AppInsights时在Azure中自动为您创建,或者您可以通过ARM模板使用DevOps进行配置等)

这个GitHub链接很好地解释了它们如何在调用AddApplicationInsightsTelemetry()

时读取配置提供程序的行为。

如果我删除参数-它会导致任何问题,当应用程序部署在测试或生产环境中?

所以这是很酷的部分,这是模糊的-删除该参数不会导致它在部署时中断,将适用于多个环境,因为读取的值将在每个不同的环境中使用相同的键名。因此,除非您显式地在您自己的源代码中的appsettings.json中有一个值要覆盖,否则您可以严格地将Azure中的所有连接字符串值保留为1..n个环境,builder.Services.AddApplicationInsightsTelemetry();一行将在appsettings中查找APPLICATIONINSIGHTS_CONNECTION_STRING

相关内容

  • 没有找到相关文章

最新更新