ASP.NET Core 3.1项目引用了.NET 4.7.2项目,在同一解决方案中出现错误'System.Web.ConfigurationManager'。

问题描述 投票:1回答:1

我有一个ASP.NET Core 3.1项目,在同一个解决方案中引用了一个.NET 4.7.2项目。它的编译没有问题,但在运行时我得到一个错误。

无法加载类型'System.Web.Configuration.WebConfigurationManager'。

我已经安装了 Microsoft.Windows.Compatibility 包,但这并没有帮助。

是我遗漏了什么,还是如果不对.NET 4.7.2项目进行重大重构,使其不使用该包,就无法工作?System.Web.Configuration.WebConfigurationManager 命名空间?

asp.net asp.net-core visual-studio-2019 asp.net-core-3.1
1个回答
2
投票

我有一个ASP.NET Core 3.1项目,在同一个解决方案中引用了一个.NET 4.7.2项目。它的编译没有问题,但在运行时我得到一个错误。

无法加载类型'System.Web.Configuration.WebConfigurationManager'。

ASP.NET Core是一个跨平台的框架,和ASP.NET Core使用不同的配置设置,详情请查看。

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

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

如果可能的话,你可以尝试修改你的类库(.NET 4.7项目),将从调用者应用中获取的数据(你在web.config中配置的,或appsettings.json)传递给类库方法,而不是通过以下方式获取数据 WebConfigurationManager 类库中。

此外,你也可以通过修改和添加额外的方法来使它与ASP.NET Core配置设置一起工作,如下所示。

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
}
© www.soinside.com 2019 - 2024. All rights reserved.