尝试使用ConfigurationBuilder但得到FileLoadException

时间:2019-09-23 19:14:47

标签: .net .net-standard-2.0

构建.net Framework(4.7.2)Windows服务并尝试引用一些针对.net标准2.0的类库

我正在尝试在ConfigurationBuilder中使用较新的配置方法。 例如。

    config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional:false)
            .Build();

当我尝试启动该服务进行调试时,它无法启动,并且在Windows应用程序日志中得到了此信息

  

框架版本:v4.0.30319说明:进程已终止   由于未处理的异常。异常信息:   System.IO.FileLoadException

appsettings文件位于目标文件夹中,但是“配置”构建器似乎无法加载它们?

我引用了所有软件包:

Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Abstractions
Microsoft.Extensions.Configuration.Binder
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.FileProviders.Physical

[更新]
虽然这与建议重复的某些链接问题有关,但事实并非如此。我没有发布到Azure,也没有从.net核心Web应用程序执行此操作。这来自运行.net framework 4.7的Windows服务项目

起初,我认为查找json配置文件时遇到问题,但实际上是FileLoadException https://docs.microsoft.com/en-us/dotnet/api/system.io.fileloadexception?view=netframework-4.8

哪个似乎表明代码找到了文件,但无法打开它? 奇怪,尤其是因为我以本地管理员身份运行。

[更新]
如果无法解决问题,我将继续尝试创建服务,而不是使用.net framework 4.7,而是使用.net core,并使用Windows Compatibility Pack,如本例所示
https://www.pmichaels.net/2019/01/08/creating-a-windows-service-using-net-core-2-2/

1 个答案:

答案 0 :(得分:0)

我的解决方案是用一个新项目替换该服务,从一个.net core 2.2控制台应用程序开始,然后使用该类以及通过Windows服务管理它的“管道”,如本线程中所述 How to make a Windows Service from .Net Core 2.1/2.2 就像冠军一样,