服务总线连接无法从本地控制台应用程序正常工作

Aru*_*nan 6 timeout socketexception azureservicebus azure-servicebus-queues

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

异常:Azure.Messaging.ServiceBus.ServiceBusException:连接尝试失败,因为连接方在一段时间后未正确响应,或者由于连接的主机无法响应而建立的连接失败。ErrorCode: TimedOut (ServiceCommunicationProblem) ---> 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.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction,操作1 endAction, Task1 承诺,布尔需要同步)

Jes*_*ire 10

企业环境中最常见的连接问题是 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);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,您可能需要查看服务总线故障排除指南