尝试使用 ConfigurationBuilder 但得到 FileLoadException

Posted

技术标签:

【中文标题】尝试使用 ConfigurationBuilder 但得到 FileLoadException【英文标题】:Trying to use ConfigurationBuilder but get FileLoadException 【发布时间】:2020-01-23 21:34:58 【问题描述】:

构建 .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 服务项目

起初,我以为 FINDING json 配置文件有问题,但异常实际上是 FileLoadException https://docs.microsoft.com/en-us/dotnet/api/system.io.fileloadexception?view=netframework-4.8

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

[更新] 如果我无法解决这个问题,我接下来将尝试创建我的服务,而不是使用 .net 框架 4.7,而是使用 .net 核心,并使用 Windows 兼容包,如本例所示 https://www.pmichaels.net/2019/01/08/creating-a-windows-service-using-net-core-2-2/

【问题讨论】:

The configuration file 'appsettings.json' was not found and is not optional的可能重复 【参考方案1】:

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

【讨论】:

以上是关于尝试使用 ConfigurationBuilder 但得到 FileLoadException的主要内容,如果未能解决你的问题,请参考以下文章

在测试项目中使用 ASP.NET Core 的 ConfigurationBuilder

如何在 Azure Function v2(核心)中静态使用 ConfigurationBuilder?

如何在 Core 2.0 的 ConfigurationBuilder 中设置 BasePath

在 BuildServiceProvider 之前访问服务

C# 配置日志记录

DNC读取配置Json文件到类中并在程序使用