我们正在运行一些长期运行的测试应用程序,通过http使用Azure Service Bus relay,托管在windows服务中,大多数情况下,这些应用程序可以正常运行2-3天。然而,有时可能会发生内部网络闪烁(例如,防火墙重新启动),从而终止互联网连接。
此时,Azure中的中继将被丢弃,我们的web应用程序将无法再与本地服务进行通信。
我会认为Azure中继客户端是容错的-如果它意识到它与Azure失去了连接,那么它将重新建立连接,如果它不能继续尝试,直到它可以。但事实似乎并非如此。这看起来很基本...?
我只见过一次"System.ServiceModel.CommunicationException“,服务无法在internet上通信,那是在客户端启动并试图首先建立连接的时候。
有没有关于通过中继服务处理暂时断开连接的建议或反馈(因为这是一个云-->本地方向,那么客户端就不能对服务器执行AFAIK )。
发布于 2014-09-04 01:36:28
如果你仍然遇到问题,你可能需要联系Azure支持,以了解它断开连接的原因。如果现有连接发生问题,中继客户端应重新连接。
您可能希望将ConnectionStatusBehavior添加到ChannelFactory中,以便在连接状态更改时将其输出。它将包含导致其更改状态的错误。
var connectionStatusBehavior = new ConnectionStatusBehavior();
connectionStatusBehavior.Online += ConnectionStatusOnlineMethod;
connectionStatusBehavior.Offline += ConnectionStatusOfflineMethod;
channelFactory.Endpoint.Behaviors.Add(connectionStatusBehavior);发布于 2015-06-26 15:54:58
Microsoft在Microsoft Azure Service Bus dll版本2.6.5中解决了此问题。经过1个月的测试,它似乎起作用了。
https://stackoverflow.com/questions/24699717
复制相似问题