ASP. NET Проект Core 3.1, который ссылается на проект. NET 4.7.2 в той же ошибке решения 'System.Web.Configuration.WebConfigurationManager' - PullRequest
1 голос
/ 13 апреля 2020

У меня есть проект ASP. NET Core 3.1, который ссылается на проект. NET 4.7.2 в том же решении. Компилируется без проблем, но во время выполнения я получаю сообщение об ошибке:

Не удалось загрузить тип 'System.Web.Configuration.WebConfigurationManager'.

Я установил Microsoft.Windows.Compatibility пакет в базовом проекте ASP. NET, но это не помогло.

Я что-то упустил или это не сработает без какого-либо серьезного рефакторинга проекта. NET 4.7.2 в не использовать это System.Web.Configuration.WebConfigurationManager пространство имен?

1 Ответ

1 голос
/ 14 апреля 2020

У меня есть ASP. NET Core 3.1 проект, который ссылается на. NET 4.7.2 проект в том же решении. Компилируется без проблем, но во время выполнения я получаю сообщение об ошибке:

Не удалось загрузить тип 'System.Web.Configuration.WebConfigurationManager'

ASP. NET Ядро кроссплатформенный фреймворк и ASP. NET Core используют разные параметры конфигурации, для получения дополнительной информации, пожалуйста, проверьте:

Я полагаю, что ваш. NET 4.7 проект может быть библиотекой классов и будет вызывается другими приложениями.

Как указано выше, ошибка System.Web.Configuration.WebConfigurationManager не может быть совместима с. NET Базовым приложением.

Если возможно, вы можете попытаться изменить свою библиотеку классов (. NET 4.7 проект) для передачи полученных данных (вы настроили в web.config или appsettings. json) из вашего приложения вызывающего в класс библиотечный метод вместо извлечения данных через 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
}
...