У меня есть приложение Web API, созданное с использованием .Net Core 2.1. Контроллер из этого веб-приложения вызывает библиотеку классов бизнес-уровня, которую я также разработал с использованием .Net Core 2.1. Все идет нормально...
Библиотека бизнес-классов .Net Core ссылается на широко используемую библиотеку классов .Net Framework 4.6.1, которую мы также разработали. Эта библиотека в основном используется для связи с очередями служебной шины Azure.
В результате эта часто используемая библиотека классов .Net Framework, в свою очередь, ссылается и использует сборку Microsoft .Net Framework, Microsoft.ServiceBus, как показано в строке кода ниже.
MessagingFactory messagingFactory = MessagingFactory.CreateFromConnectionString(configValue);
Как вы можете видеть, строка кода выше, которая находится в нашей широко используемой библиотеке классов .Net Framework, передает строковое значение (например, configValue
) статическому методу, который существует в сборке Microsoft.ServiceBus.
Однако всякий раз, когда выполняется приведенная выше строка кода, я получаю следующую ошибку:
При обработке запроса возникло необработанное исключение.
TypeLoadException: не удалось загрузить тип «System.Web.Configuration.WebConfigurationManager» из сборки «System.Web, версия = 4.0.0.0, культура = нейтральный, PublicKeyToken = b03f5f7f11d50a3a».
Ради интереса я добавил следующую строку кода, в которой получаю ту же ошибку:
string configValue = WebConfigurationManager.AppSettings["connectionString"];
Очевидно, проблема в том, что сборка System.Web .Net Framework не загружена.
Однако, учитывая, что веб-приложение является .Net Core, как я могу заставить это веб-приложение загружать базовую сборку .Net Framework, которая требуется для широко используемой библиотеки?
Рассмотренные решения - (неподходящие)
- Раньше у меня была аналогичная проблема, которую легко решить путем установки необходимого пакета NuGet, но в этот раз мне не удалось найти такой пакет.
- У нашей команды есть еще одно приложение веб-API в .Net Framework, которое без проблем вызывает эту широко используемую библиотеку классов, однако это не вариант, и нам нужно сохранить текущее приложение веб-API. на основе .Net Core.
- Я также подумал о том, чтобы переписать широко используемую библиотеку как библиотеку классов .Net Standard 2.0, но с учетом размера библиотеки это не было бы реалистичным подходом, и он не обязательно затронет лежащие в основе проблема.
Другие возможные решения
- Загрузите Web.config из приложения .Net Core Web API, который содержит
configSections
section
, ссылающийся на сборку System.Web. Я пробовал это, но это не сработало, и я уверен, что если бы я просто не выполнил все необходимые шаги. Возможно ли это, и если да, то какие-либо предложения? - Есть ли альтернативный способ загрузить сборку .Net Framework из веб-API .Net Core?
- Пожертвуйте, используя часто используемую библиотеку, и найдите альтернативную (примерную) базу кода, которая обеспечивает аналогичную функциональность (т. Е. Использует Microsoft.ServiceBus для работы с нашими очередями Azure), но основывается либо на .Net Core, либо на .Net Standard. Но, как и в приведенном выше решении .Net Standard, я не уверен, сколько функций потребуется реплицировать, а также не уверен в отправной точке. Мысли?
Спасибо!