自从我开始使用 Azure
和 App Service
资源以来,一直有一个问题我希望获得有关应用设置配置变量的明确答案。
查看文档 here ,我们可以看到以下内容:
“在应用服务中,您可以在应用代码之外设置应用设置和连接字符串。然后您可以使用标准 ASP.NET 模式在任何类中访问它们:
using System.Configuration;
...
// Get an app setting
ConfigurationManager.AppSettings["MySetting"];
// Get a connection string
ConfigurationManager.ConnectionStrings["MyConnection"];
}
如果您在应用服务和 web.config 中配置具有相同名称的应用设置,则应用服务值优先于 web.config 值。本地 web.config 值允许您在本地调试应用程序,但应用程序服务值允许您使用生产设置在产品中运行应用程序。连接字符串的工作方式相同。这样,您就可以将应用程序的 secret 保存在代码存储库之外,并在不更改代码的情况下访问适当的值。”
这是否意味着 ConfigurationManager
是负责使用应用服务配置变量(如果存在)的神奇功能的类?
如果我们使用例如
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile($"appsettings.json", true, true)
由于 ConfigurationBuilder 不使用环境变量,在这种情况下,我认为应用程序服务变量将不再起作用,对吗?
在上面的示例中,它是 dotnet core,我查看了文档 here而且配置的方式好像有点不一样。我想知道配置生成器是否需要 .AddEnvironmentVariables();
。
查看文档,很难理解是否是应用程序被配置为添加环境变量的问题,或者应用程序服务是否能够在应用程序配置中注入(inject)应用程序设置。如果我们看here 。我们看到这个:
如何处理带有该前缀的变量?
例如,配置应用程序设置中的变量带或不带 APPSETTING_
前缀是否有所不同?
{
"name": "Test",
"value": "123",
"slotSetting": false
}
和
{
"name": "APPSETTING_Test",
"value": "123",
"slotSetting": false
}
最佳答案
是的,如果您 .AddEnvironmentVariables()
,AppService 中配置的 AppSettings 将包含在您的构建器中,但最好使用某些前缀,例如 ASPNETCORE_
关于azure - 如何在 dotnet 应用程序中使用 Azure 应用服务的应用程序设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72755233/