首页 > 解决方案 > 为什么 Microsoft.Azure.EventHubs.Processor 仍然引用 Microsoft.WindowsAzure.Storage?

问题描述

构建 dotnet core 2.2

我包括以下内容:

using Microsoft.Azure.EventHubs;             (4.0.0)
using Microsoft.Azure.EventHubs.Processor;   (4.0.0)

我抛出一个异常试图做:

_eventProcessorHost = new EventProcessorHost(
               hubName,
               PartitionReceiver.DefaultConsumerGroupName,
               _eventHubConnectionString,
               _storageConnectionString,
               blobName);

异常说:

“无法从程序集‘Microsoft.Azure.Storage.Common,版本=11.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35’中加载类型‘Microsoft.WindowsAzure.Storage.CloudStorageAccount’”

当我查看存根时,我确实可以看到 EventProcessorHost 的各种构造函数确实引用了旧命名空间中的成员——例如 Microsoft.WindowsAzure.Storage.CloudStorageAccount。

我的理解是旧空间 Microsoft.WindowsAzure 已完全被新空间 Microsoft.Azure 取代。我还需要导入旧空间吗?

尝试安装 Microsoft.WindowsAzure.Common,卸载并重新安装 WindowsAzure 库。

标签: azure.net-corestorageazure-eventhub

解决方案


更新 0822

这似乎是 4.0.0 版本的 Microsoft.Azure.EventHubs.Processor 中的一个错误,有一个问题可以跟踪它。目前,您可以根据需要使用 3.0.0 版本。

而且,我按照这个官方文档来测试事件中心接收器,使用 4.0.0 包Microsoft.Azure.EventHubsMicrosoft.Azure.EventHubs.Processor,它在我身边运行良好。并且默认安装的 storage sdk 是Microsoft.Azure.Storage.Blob9.4.2 版本。

注意:如您所见,EventProcessorHost 有 5 个构造函数,请使用第一个使用字符串类型的所有参数。

在此处输入图像描述

测试结果:

在此处输入图像描述


请尝试使用最新版本4.0.0的 nuget Package Microsoft.Azure.EventHubs.Processor,它使用新版本的 storage sdk 之类的Microsoft.Azure.Storage.Blob。截图如下:

在此处输入图像描述

4.0.0 之前的其他版本,如 3.0.0 / 2.2.1 仍在使用旧的存储 sdk,如WindowsAzure.Storage.


推荐阅读