Csharp/C#教程:无法使用Microsoft.Azure.ServiceBus连接到Azure ServiceBus分享


无法使用Microsoft.Azure.ServiceBus连接到Azure ServiceBus

我创建了一个非常简单的控制台应用程序,它连接到Azure ServiceBus并发送一条消息。 我尝试了Microsoft的最新库( Microsoft.Azure.ServiceBus ),但不管我做什么,我只是得到这个错误:

无法建立连接,因为目标计算机主动拒绝它ErrorCode:ConnectionRefused

我在Service Bus Explorer中尝试了完全相同的连接字符串,它确实工作正常。 此外,我使用Microsoft的旧库( WindowsAzure.ServiceBus )连接没有问题。

 var sender = new MessageSender("endpoint", "topicName"); sender.SendAsync(new Message(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject("test")))); 

我尝试使用.NET Framework 4.6.2和Core,同样的例外。 我怀疑这些库使用的默认协议可能存在一些差异,但我无法确定这一点。

PS尝试过Microsoft文档中的示例,但结果仍然是相同的例外

旧客户端使用TCP,HTTP,HTTPS和AutoDetect支持ConnectivityMode 。 ServiceBus Explorer使用AutoDetect ,首先尝试TCP,然后故障转移到HTTPS,无论您使用的是什么TransportMode (SBMP或AMQP)。

随着新客户端的改变。 TransportMode现在结合了两个选项并提供Amqp (基于TCP的AMQP)或AmqpWebSockets (基于WebSockets的AMQP)。 没有AutoDetect模式。 您必须创建客户端并将TransportType指定为AmqpWebSockets以绕过被阻止的TCP端口5671,而是使用端口443。

似乎文档在如何使用HTTPS(Amqp over WebSockets)上进行连接方面缺乏很多,但在接受了 Sean Feldman的帮助后,我设法连接了。 以下是我感兴趣的代码:

 var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider( "RootManageSharedAccessKey", // SharedAccessKeyName "SomeToken"); var sender = new MessageSender( "sb://mydomain.servicebus.windows.net/", "topicName", tokenProvider, TransportType.AmqpWebSockets); 

或者让你将整个连接字符串整合在一起的变体

 var builder = new ServiceBusConnectionStringBuilder("YouConnectionString"); var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider( builder.SasKeyName, builder.SasKey); var sender = new MessageSender( builder.Endpoint, "TopicName", tokenProvider, TransportType.AmqpWebSockets); 

实际上可以直接使用ConnectionString,但必须扩充它才能使用正确的协议。

 var sender = new MessageSender("TransportType=AmqpWebSockets;Endpoint=...", "TopicName") 

或者允许将EntityPath嵌入ConnectionString的版本

上述就是C#学习教程:无法使用Microsoft.Azure.ServiceBus连接到Azure ServiceBus分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var connectionBuilder = new ServiceBusConnectionStringBuilder("EntityPath=MyTopic;TransportType=AmqpWebSockets;Endpoint=...") var sender = new MessageSender(connectionBuilder); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/958832.html

(0)
上一篇 2021年11月23日
下一篇 2021年11月23日

精彩推荐