我试图了解appsettings.json
和appsettings.{Environment}.json
以及环境变量如何在dotnet core 2.1应用程序中一起使用,但是我不知道运行时的应用程序设置如何(无论最终转换是什么) )由应用程序访问。
我希望在已编译的dll(例如MyWebApiApp\bin\Debug\netcoreapp2.1
)中包含appsettings,但在那儿看不到它。
了解这将帮助我找到针对OpenShift configmap和appsettings的最佳方法,因为我需要知道我是否应该在运行时依赖appsettings,或者appsettings是否对开发有用,但在生产中我应该依靠环境变量,而不是
谢谢!
答案 0 :(得分:1)
您是否在Visual Studio中运行代码?默认的CreateDefaultBuilder
使用Directory.GetCurrentDirectory()
来确定从哪个文件夹加载设置文件。在Visual Studio中运行时,当前目录是您的项目目录-因此,在运行/调试程序时,它会找到正确的设置文件。
一种测试方法是更改为命令行并使用dotnet myapp.dll
运行您的应用程序。如果您要从appsettings
文件加载设置,它将找不到该文件,并且设置将为空。
如果将appsettings
文件的属性更改为copy if newer
并重建应用程序,则从命令行运行它时,它将正确找到设置文件。
您可以通过查看implementation file来了解网络托管服务商如何确定要使用的设置。但是,简而言之,dotnetcore将按以下顺序使用设置:
此文档为here
因此,如果部署应用程序后某些设置可能会更改,那么您可以通过环境变量覆盖它们。如果您希望以这种方式进行配置,则可以重新部署appsettings
文件,但是根据我的经验,通过环境变量(可能使用第三方工具)处理生产设置要容易得多。木偶。
希望有帮助。