已发布的 .Net Core 2 应用程序未读取 appsettings.json 文件

Published .Net Core 2 application does not read appsettings.json file

我有 2 个应用程序,一个控制台一个网络 api 都是 .net core v2.0。两者都有同样的问题。

我曾经 运行 我的应用程序通过源文件。我在一台 linux 机器上构建并 运行 安装它们。一切都很好,一切都很棒,但现在我 运行 通过发布输出使用同一个应用程序。

现在它无法正常工作,因为该应用无法读取 appsettings.json。

configuration["Settings:Port"] != null 
? int.Parse(configuration["Settings:Port"]) //i should be getting this - 1234
: default(int) //but instead i got this - 0

我损坏了 appsettings.json 文件,我希望看到异常,但什么也没有。根本不值一提。我检查了几次文件,修改了几次文件只是因为我很绝望。没有什么。什么都没有发生,什么也没有改变。

我尝试了调试构建,我尝试了发布构建,我尝试更改该文件的构建操作...我试过这个,我试过那个...没有任何效果,我不知道为什么。

如您所料,我需要一些建议。谢谢大家


编辑:

如何 use/read 配置文件:

IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", true, true).Build();

问题是我 运行 应用程序的路径。

我正在 运行ning 从根 (/) 启动应用程序的命令。应用程序 运行 正常,但显然无法找到 appsettings.json 文件。

我尝试从项目路径启动应用程序,所以我进入项目目录,运行命令,一切恢复正常。


详细解释在这里:

当我运行安装上面提到的那些应用程序时,我曾经 cd 到它们的目录并执行 "dotnet run"。

cd /blabla/etcetc
dotnet run

但是,在我发布它们之后,我无法使用相同的命令。我必须指定它的 dll。然后我想,我可以 运行 他们而不用 cd-ing 进入他们的目录。

dotnet /blabla/etcetc/my.project.dll

这就是问题所在。而不是这样做,现在我正在这样做;

cd /blabla/etcetc
dotnet my.project.dll

我所做的是为 AppContext.BaseDirectory 更改 Directory.GetCurrentDirectory(),这修复了与应用程序设置和配置相关的所有错误。