小编Mar*_*tyG的帖子

TypeLoadException通过Web API Core应用程序调用.Net Framework库时无法加载类型"WebConfigurationManager"

我有一个使用.Net Core 2.1创建的Web API应用程序.此Web应用程序中的控制器调用我也使用.Net Core 2.1开发的业务层类库.到现在为止还挺好...

对.NET核心业务类库引用了一个常用的.Net框架4.6.1类库,我们还开发了.此库主要用于与Azure服务总线队列通信.

因此,这个常用的.Net Framework类库反过来引用并使用Microsoft .Net Framework Assembly,Microsoft.ServiceBus,如下面的代码行所示.

MessagingFactory messagingFactory = MessagingFactory.CreateFromConnectionString(configValue);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我们常用的.Net Framework类库中的代码行将字符串值(即configValue)传递给Microsoft.ServiceBus程序集中存在的静态方法.

但是,每当执行上面的代码行时,我都会收到以下错误:

处理请求时发生未处理的异常.

TypeLoadException:无法从程序集'System.Web,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'加载类型'System.Web.Configuration.WebConfigurationManager'.

出于兴趣,我添加了以下代码行,我得到了同样的错误:

string configValue = WebConfigurationManager.AppSettings["connectionString"];
Run Code Online (Sandbox Code Playgroud)

显然,问题是未加载System.Web .Net Framework程序集.

但是,鉴于Web应用程序是.Net Core,那么如何使此Web应用程序加载常用库所需的基础.Net Framework程序集?


考虑的解决方案 - (不合适)

  • 我有一个类似的问题,之前通过安装必要的NuGet包很容易解决,但在这种情况下,我无法找到这样的包.
  • 我们的团队在.Net Framework中有另一个Web API应用程序,它可以毫无问题地调用这个常用的类库,但这不是一个选项,我们需要保持基于.Net Core的当前Web API应用程序.
  • 我还考虑将常用的库重新编写为.Net Standard 2.0类库,但考虑到库的大小,这不是一个现实的方法,也不一定能解决潜在的问题.

其他可行解决方案

  • 从包含configSections section引用程序集System.Web 的.Net Core Web API应用程序中加载Web.config …

c# asp.net azure-servicebus-queues .net-core asp.net-core

5
推荐指数
1
解决办法
1309
查看次数