我一直在尝试将一些应用程序配置从使用 appsettings.json 文件迁移到使用 Azure 应用程序配置。尽管注释掉了 .AddJsonFile 扩展,应用程序似乎仍然使用它们来构建配置。
除了导致使用应用程序设置的配置生成器设置之外,我无法确定是否错过了其他一些设置。
我在 API 的 Main() 方法中注释掉了旧的 .AddJsonFile 扩展,并期望它在尝试执行它时抛出错误。
奇怪的是,它仍然运行良好,因此我删除了服务器上的 appsettings.json 文件(位于 site/wwwroot 下),重新启动了应用程序服务,然后当我再次尝试点击它时收到了我所期望的错误。所以在我看来,应用程序服务仍在使用 appsettings 文件来生成配置。
这是我的 Main() 方法的样子:
public static void Main(string[] args)
{
var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
//.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
//.AddJsonFile($"appsettings.{env}.json", optional: true, reloadOnChange: true)
.AddAzureAppConfiguration()
.Build();
}
我已经搜索了应用程序的其余部分和应用程序服务,以尝试查看是否有其他一些针对 appsettings.json 文件的设置,但无法找到任何设置。
当尝试在线查找类似问题时,我只遇到了有关人们尝试通过 json 文件添加配置的问题,而没有遇到过人们试图停止使用 json 的问题文件。
API 位于 .NET 7 上(不使用顶级语句),并作为 Web 应用程序托管在 Azure 应用服务上。
最佳答案
Why are my AppSettings JSON files being included even after commenting them out of the configuration builder?
部署应用程序后,appsettings.json
文件将在已部署应用程序的root
文件夹中可用。
即使您避免使用它或正如您所说的那样,部署后配置文件也已存在于生产环境中。因此,将从那里选取值。
无论您如何删除该文件,但它仍然从
appsettings
配置中获取值。原因可能是环境变量中的值可用。
即使我们
在本地或部署的应用程序中没有配置,并且在环境变量中有配置设置。应用程序采用
环境变量=>
应用程序设置`的值。
这就是您的应用仍在使用应用设置的原因。
删除键值对并立即运行应用。
为避免混淆,请确保删除 KUDU 中的所有
appsettings json
文件。如果您已在 Azure 门户中将环境设置为开发,并在 KUDU 中拥有
appsettings.Development.json
文件,那么它将从现有文件本身中选取值。
关于azure - 为什么即使在将我的 AppSettings JSON 文件从配置生成器中注释掉之后,它们仍然被包含在内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77194312/