服务总线连接在本地控制台应用程序中不起作用

Service bus connection is not working from on-premise console application

我创建了一个 .net core 3.1 控制台应用程序来读取 azure 服务总线队列消息,并将 EXE 部署在客户端本地 VM 中。它最初可以工作,但现在不能在 VM 上工作(现在也可以在本地机器上工作)。在本地 VM 中执行 exe 时出现超时(套接字异常)。我正在使用共享访问策略连接串来连接服务总线。

异常: Azure.Messaging.ServiceBus.ServiceBusException: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应。错误代码:超时(服务通信问题) ---> System.Net.Sockets.SocketException (10060): 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应。 在 Microsoft.Azure.Amqp.Transport.TransportStream.EndRead(IAsyncResult asyncResult) 在 Microsoft.Azure.Amqp.Transport.TransportStream.<>c__DisplayClass22_0.b__1(IAsyncResult a) 在 System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction,Action1 endAction, Task1 promise,Boolean requiresSynchronization)

企业环境中最常见的连接问题是 AMQP over TCP (5671/5672) 所需的端口未打开。通过 WebSockets 将传输更改为 AMQP 通常会有所帮助,因为它将使用端口 443,并且可以在需要时通过代理进行路由。

在创建客户端时,可以使用 ServiceBusClientOptions 指定传输和代理(如果需要):

var options = new ServiceBusClientOptions
(
    TransportType = ServiceBusTransportType.AmqpWebSockets,
    WebProxy = new WebProxy("https://proxyserver:80", true)
};
    
var client = new ServiceBusClient("<< CONNECTION STRING >>", options);

有关详细信息,您可能需要查看 Service Bus troubleshooting guide