我正在尝试将我们现有的 .NET 4.6.1
类库移植到 .NET Standard 2.1
。
大多数依赖已经解决。但是,我不确定该如何处理 System.Web.Configuration
。
我们现有的代码类似于以下内容:
config = WebConfigurationManager.OpenWebConfiguration("~/");
- 如何将 System.Web.Configuration 依赖项包含到我的项目中?
- 如何更改代码以删除此依赖关系?
我正在尝试将我们现有的 .NET 4.6.1
类库移植到 .NET Standard 2.1
。
大多数依赖已经解决。但是,我不确定该如何处理 System.Web.Configuration
。
我们现有的代码类似于以下内容:
config = WebConfigurationManager.OpenWebConfiguration("~/");
System.Web.Configuration不属于.netstandard/.netcore。对于Web应用程序,配置不再在web.config上完成,而是在appsettings.json上进行(具有环境特定配置的可能性)。
您应该使用Microsoft.Extensions.Configuration而不是System.Web.Configuration。IConfiguration接口默认表示您网站的配置,并可以注入到您的服务中。
IConfiguration
不应该 直接注入。最好注入强类型的配置对象,而不是直接依赖于配置系统。 - Panagiotis Kanavos
WebConfigurationManager
将不会返回任何内容。在.NET Core(不仅仅是ASP.NET Core),您可以从多个源加载设置,生成具体的配置对象并通过依赖注入进行注入。这也使得测试变得更加容易 - 如果您想测试控制器,只需即时创建一个对象并将其传递给构造函数即可。 - Panagiotis KanavosMicrosoft.Extensions.Configuration
是一个 .NET Standard 包。它可以被两个运行时使用。你不应该直接尝试读取 web config,当前的库应该从客户端代码中作为具体对象接收其配置设置。简单地移除硬编码的配置访问将允许你的库与两个运行时一起工作。毕竟,为什么 .NET Framework 用户必须使用 你的 web.config 布局呢?为什么要阻止他们从数据库加载设置呢? - Panagiotis Kanavos