是否可以将 Microsoft.Extensions.Configuration 库与 ASP.NET 5 集成?

Posted

技术标签:

【中文标题】是否可以将 Microsoft.Extensions.Configuration 库与 ASP.NET 5 集成?【英文标题】:Is it possible to integrate Microsoft.Extensions.Configuration library with ASP.NET 5? 【发布时间】:2018-03-20 17:11:02 【问题描述】:

我决定将我的一个 ASP.NET MVC 5 应用程序迁移到 ASP.NET Core 2,但我希望两个版本都能正常工作。我已经将所有类库迁移到 .NET Standard(以便我可以在两个项目中使用它们)并且想使用 Microsoft.Extensions.Configuration 标准库来管理应用程序设置。

虽然在 ASP.NET Core 2.0 中使用此配置库不是问题,但我找不到在 ASP.NET MVC 5 应用程序中正确加载 web.config 文件的方法。这是我当前用于加载 web.config 文件的代码:

var configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddXmlFile("web.config");

_configuration = configurationBuilder.Build();

但是,每次我运行应用程序时,都会收到异常:System.FormatException: A duplicate key 'appSettings:add:key' was found'appSettings:add:key'。我仔细检查了文件,没有重复的密钥,所以我猜这是兼容性的问题。是否有人将 MS 配置库与 ASP.NET MVC 5 一起使用并找到了正确使用 stadnard web.config 文件的方法?

【问题讨论】:

您最终找到解决方案了吗? 抱歉回答晚了。暂时,我创建了一些丑陋的解决方案,然后我决定放弃 MVC 5 项目,所以没有必要解决这个问题。但是,您可以查看此处提供的答案:benfoster.io/blog/net-core-configuration-legacy-projects。上一节中提到的LegacyConfigurationProvider 看起来像是可以使其工作的解决方案 不用担心。感谢您抽出宝贵时间回复! 【参考方案1】:

现在在更高级别上定义了一些键,您需要避免在配置中重复它。

例如,在我删除键之前,我在加载时遇到了同样的错误:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusivejavascriptEnabled" value="true" /> 

【讨论】:

感谢您的回复。不幸的是,即使删除了默认键,我在应用程序中使用的自定义应用程序设置也会引发异常。此外,即使在删除所有 app.settings 之后,在 &lt;assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"&gt; 部分开始的行开始抛出另一个异常。异常声明“asp.net web.config 不支持 XML 命名空间”

以上是关于是否可以将 Microsoft.Extensions.Configuration 库与 ASP.NET 5 集成?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .NET Core 中使用结构化参数记录异常

是否可以将持久底片作为片段?

是否可以将对象设置为空?

是否可以将 MPMoviePlayerController 静音?

是否可以将数据传递给css文件?

是否可以将 Lua 脚本修改为要求?