ASP.NET 核心 3.1 项目在同一解决方案错误中引用 .NET 4.7.2 项目 'System.Web.Configuration.WebConfigurationManager'

ASP.NET Core 3.1 project that is referencing a .NET 4.7.2 project in the same solution error 'System.Web.Configuration.WebConfigurationManager'

我有一个 ASP.NET 核心 3.1 项目,它在同一解决方案中引用了 .NET 4.7.2 项目。它编译没有问题,但在运行时出现错误:

Could not load type 'System.Web.Configuration.WebConfigurationManager'.

我已经在 ASP.NET 核心项目中安装了 Microsoft.Windows.Compatibility 包,但这没有帮助。

我是否遗漏了什么,或者如果不对 .NET 4.7.2 项目进行一些重大重构以不使用该 System.Web.Configuration.WebConfigurationManager 命名空间,这将无法工作吗?

I have an ASP.NET Core 3.1 project that is referencing a .NET 4.7.2 project in the same solution. It compiles without problems but at runtime I get an error:

Could not load type 'System.Web.Configuration.WebConfigurationManager'

ASP.NET Core是跨平台框架,ASP.NET Core使用不同的配置设置,更多信息请查看:

我想您的 .NET 4.7 项目可能是一个 class 库,并且会被其他应用程序调用。

如上错误所示 System.Web.Configuration.WebConfigurationManager 无法与 .NET Core 应用程序兼容。

如果可能,您可以尝试修改您的 class 库(.NET 4.7 项目)以传递从调用方检索到的数据(您在 web.config 或 appsettings.json 中配置)应用到 class 库方法,而不是通过 class 库中的 WebConfigurationManager 检索数据。

此外,您还可以修改和添加其他方法,使其与 ASP.NET 核心配置设置一起使用,如下所示。

public class MyClassLibrary
{
    private readonly IConfiguration Configuration;
    public MyClassLibrary()
    {
    }
    public MyClassLibrary(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void MethodForNet()
    {
        var val = WebConfigurationManager.AppSettings["mykey"];

        //code logic here
    }

    public void MethodForCore()
    {
        var val = Configuration["AppSettings:mykey"];

        //code logic here
    }

    //other methods
}