【发布时间】:2018-07-15 21:20:58
【问题描述】:
我有一个 Web API 应用程序使用 .Net Core 2.1 创建。此 Web 应用程序中的控制器调用我也使用 .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 程序集未加载。
但是,鉴于 Web 应用程序是 .Net Core,那么如何让这个 Web 应用程序加载常用库所需的底层 .Net Framework 程序集?
考虑的解决方案 -(不合适)
- 我之前遇到过类似的问题,通过安装必要的 NuGet 包可以轻松解决,但这次我找不到这样的包。
- 我们的团队在 .Net Framework 中有另一个 Web API 应用程序,它可以毫无问题地调用这个常用的类库,但这不是一个选项,我们需要保持当前基于 .Net Core 的 Web API 应用程序。
- 我还考虑过将常用库重写为 .Net Standard 2.0 类库,但考虑到库的大小,这不是一个现实的方法,也不一定解决根本问题。
其他可能的解决方案
- 从 .Net Core Web API 应用程序中加载 Web.config,其中包含引用程序集 System.Web 的
configSectionssection。我试过了,但它没有用,我确定我是否没有应用所有必要的步骤。这可能吗?如果可以,有什么建议吗? - 是否有其他方法可以从 .Net Core Web API 中加载 .Net Framework 程序集?
- 牺牲使用常用库并找到提供类似功能的替代(示例)代码库(即使用 Microsoft.ServiceBus 来处理我们的 Azure 队列),但它是基于 .Net Core 或 .Net Standard 的。但与上面的 .Net 标准解决方案类似,我不确定需要复制多少功能,也不确定起点。想法?
谢谢!
【问题讨论】:
标签: c# asp.net asp.net-core .net-core azure-servicebus-queues