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

nic*_*ric 0 asp.net-core-2.0 .net-core-2.0

我有2个应用程序,一个控制台一个Web 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
Run Code Online (Sandbox Code Playgroud)

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

我尝试了调试构建,尝试了发布构建,尝试更改了该文件的构建操作……尝试了,尝试了…………什么都行不通,我也不知道为什么。

如您所料,我需要一些建议。谢谢你们。


编辑:

我如何使用/读取配置文件:

IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", true, true).Build();
Run Code Online (Sandbox Code Playgroud)

nic*_*ric 9

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

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

我尝试从Project路径启动该应用程序,因此我将其CD到Project目录中,运行命令,一切恢复正常。


详细说明在这里:

当我运行上面提到过的那些应用程序时,我曾经使用cd进入其目录并执行“ dotnet run”。

cd /blabla/etcetc
dotnet run
Run Code Online (Sandbox Code Playgroud)

但是,在发布它们之后,我无法使用相同的命令。我必须指定它为dll。然后我想出了,我可以直接运行它们而无需CD-进入它们的目录。

dotnet /blabla/etcetc/my.project.dll
Run Code Online (Sandbox Code Playgroud)

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

cd /blabla/etcetc
dotnet my.project.dll
Run Code Online (Sandbox Code Playgroud)