.NET标准类库中的System.Web

5

我正在尝试将我们现有的 .NET 4.6.1 类库移植到 .NET Standard 2.1。 大多数依赖已经解决。但是,我不确定该如何处理 System.Web.Configuration。 我们现有的代码类似于以下内容:

config = WebConfigurationManager.OpenWebConfiguration("~/");
  • 如何将 System.Web.Configuration 依赖项包含到我的项目中?
  • 如何更改代码以删除此依赖关系?

2
作为快速评论,System.Web在.NET Core / Standard中完全超出了范围,因此解决方案将是更改代码。 - Pac0
我认为你需要用自定义编写的代码来替换整个部分,除非已经有一些NuGet包来处理它。在ASP.NET Core中,通过web.config进行的配置已经不存在了。 - Tanveer Badar
1
配置系统也完全不同,所以WebConfigurationManager将不会返回任何内容。在.NET Core(不仅仅是ASP.NET Core),您可以从多个源加载设置,生成具体的配置对象并通过依赖注入进行注入。这也使得测试变得更加容易 - 如果您想测试控制器,只需即时创建一个对象并将其传递给构造函数即可。 - Panagiotis Kanavos
1
.NET Core的配置在ASP.NET Core中的配置选项中有详细说明。现在您需要了解配置如何工作,以决定如何修改应用程序,如何构造设置,需要哪些设置部分,哪些对象等。还需要了解如何在不同环境下覆盖设置 - XDT转换也已被替换。 - Panagiotis Kanavos
1
Microsoft.Extensions.Configuration 是一个 .NET Standard 包。它可以被两个运行时使用。你不应该直接尝试读取 web config,当前的库应该从客户端代码中作为具体对象接收其配置设置。简单地移除硬编码的配置访问将允许你的库与两个运行时一起工作。毕竟,为什么 .NET Framework 用户必须使用 你的 web.config 布局呢?为什么要阻止他们从数据库加载设置呢? - Panagiotis Kanavos
显示剩余2条评论
1个回答

2

System.Web.Configuration不属于.netstandard/.netcore。对于Web应用程序,配置不再在web.config上完成,而是在appsettings.json上进行(具有环境特定配置的可能性)。

您应该使用Microsoft.Extensions.Configuration而不是System.Web.Configuration。IConfiguration接口默认表示您网站的配置,并可以注入到您的服务中。


1
IConfiguration 不应该 直接注入。最好注入强类型的配置对象,而不是直接依赖于配置系统。 - Panagiotis Kanavos
同意这一点。我的观点更多是为了解释在.NET Core中配置如何与.NET Framework相比工作。 - Arnaud Leclerc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接