服务总线连接在本地控制台应用程序中不起作用
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, Func
2 endFunction,Action1 endAction, Task
1 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。
我创建了一个 .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, Func
2 endFunction,Action1 endAction, Task
1 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。