无法连接到Azure服务总线队列

时间:2018-10-05 06:37:53

标签: c# azure .net-core azure-servicebus-queues .net-core-2.1

我正在尝试收听azure服务总线队列 但是初始化与队列的连接时出现异常。 我试图寻找出路,但成功率较低。 请注意,正在使用.NETCore 2.1。 这是初始化连接的方式:

// Initialize the connection to Service Bus Queue
_queueClient = QueueClient.CreateFromConnectionString(_interswitchQueueConnectionString, _interswitchQueueName, ReceiveMode.ReceiveAndDelete);

这个异常越来越严重了:

  

System.TypeInitializationException:类型初始化器   “ Microsoft.ServiceBus.Messaging.Constants”引发了异常。 ->   System.TypeLoadException:无法加载类型“ System.UriTemplate”   来自程序集'System.ServiceModel,Version = 4.0.0.0,Culture = neutral,   PublicKeyToken = b77a5c561934e089'。       在Microsoft.ServiceBus.Messaging.Constants..cctor()       ---内部异常堆栈跟踪的结尾---       在Microsoft.ServiceBus.ServiceBusConnectionStringBuilder..ctor()       在Microsoft.ServiceBus.Messaging.QueueClient.CreateFromConnectionString(String   connectionString,字符串路径,ReceiveMode模式)

使用.net框架时,相同的初始化工作正常。 如何在.NetCore中做到这一点? 请帮忙 预先感谢

3 个答案:

答案 0 :(得分:3)

对于.NET Core,您应该使用新的.NET Standard Azure Service Bus客户端Microsoft.Azure.ServiceBus。旧客户端WindowsAzure.ServiceBus是旧客户端,仅适用于Full Framework,并且建议继续。

新客户没有工厂的概念。您负责创建实体客户端(QueueClientSubscriptionClientTopicClient)并管理连接。

答案 1 :(得分:1)

在Dotnet Core 2.1上,您可以尝试此操作。

var queueClient = new QueueClient(connectionString, entityPath, ReceiveMode.ReceiveAndDelete);

希望这会有所帮助。

答案 2 :(得分:0)

您也可以使用MessagingFactory

MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);

            queueClient = await factory.CreateMessageReceiverAsync(_entityPath, ReceiveMode.ReceiveAndDelete);