我有 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
我已经损坏了 appsettings.json 文件,我希望看到一个异常,但什么也没有。根本不值一提。我检查了几次文件,我修改了几次文件,只是因为我很绝望。没有什么。什么都没有发生,什么都没有改变。
我试过调试构建,我试过发布构建,我试图改变那个文件的构建动作……我试过这个,我试过那个……没有任何效果,我不知道为什么。
你可以猜到,我需要一些建议。谢谢你们。
编辑:
我如何使用/读取配置文件:
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", true, true).Build();
问题是我运行应用程序的路径。
我正在运行命令以从根 (/) 启动应用程序。应用程序运行良好,但显然无法找到 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句