gpt4 book ai didi

c# - 通过 Web API 核心应用程序调用 .Net Framework 库时,TypeLoadException 无法加载类型 'WebConfigurationManager'

转载 作者:太空狗 更新时间:2023-10-29 23:49:16 29 4
gpt4 key购买 nike

我有一个 Web API 应用程序使用 .Net Core 2.1 创建。此 Web 应用程序中的 Controller 调用我也使用 .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 程序集。

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

An unhandled exception occurred while processing the request.

TypeLoadException: Could not load type 'System.Web.Configuration.WebConfigurationManager' from assembly 'System.Web, Version=4.0.0.0, Culture=neutral, 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 类库,但考虑到库的大小,这不是一个现实的方法,也不一定解决根本问题。

其他可能的解决方案

  • 从包含引用程序集 System.Web 的 configSections section 的 .Net Core Web API 应用程序中加载 Web.config。我尝试了这个,但它没有用,我确定我是否只是没有应用所有必要的步骤。这可能吗?如果可以,有什么建议吗?
  • 是否有其他方法可以从 .Net Core Web API 中加载 .Net Framework 程序集?
  • 牺牲使用常用的库并找到提供类似功能(即利用 Microsoft.ServiceBus 与我们的 Azure 队列一起工作)但基于 .Net Core 或 .Net Standard 的替代(示例)代码库。但类似于上面的 .Net Standard 解决方案,我不确定需要复制多少功能,也不确定起点。想法?

谢谢!

最佳答案

我遇到了同样的问题,经过调查我发现我的 azure 函数应用程序运行时版本是 2.0 ~ 并且根据 documentation版本 2 是 .NET Core 2,函数应用程序版本 1.0 ~ 是 .NET Framework 4.7。我的 visual studio function app 项目有 .NET Framework 4.6.1 。因此,我只需要将我的函数应用程序版本更改为 ~ 1.0。

简而言之

  • 如果您在 .NET Core 2.0 中有 visual studio 函数应用程序,则仅使用函数应用程序版本 2.0
  • 如果您在 .NET Framework 4.7 中有 visual studio 函数应用程序,则仅使用函数应用程序版本 1.0

enter image description here

关于c# - 通过 Web API 核心应用程序调用 .Net Framework 库时,TypeLoadException 无法加载类型 'WebConfigurationManager',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352331/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com