【发布时间】:2015-08-17 19:42:43
【问题描述】:
我有一个托管在使用 Azure 服务总线中继的 Window 服务中的 WCF 服务。它在 transferMode="Streamed" 中使用 netTcpRelayBinding。它向连接到它的客户端公开本地功能。
<bindings>
<netTcpRelayBinding>
<binding name="netTcpRelayBinding" closeTimeout="01:00:00" openTimeout="01:00:00" receiveTimeout="01:00:00" sendTimeout="01:00:00"
maxBufferPoolSize="1048576" maxReceivedMessageSize="1048576000" maxBufferSize="1048576" transferMode="Streamed" maxConnections="200"
listenBacklog="200"/>
</netTcpRelayBinding>
</bindings>
问题:如何让它从网络中断中恢复并尝试重新打开连接?
我认为在测试期间禁用 PC 上的网络适配器时会触发故障或关闭事件,但从未触发。
_serviceHost = new ServiceHost(typeof(MyService));
_serviceHost.Faulted += _serviceHost_Faulted;
_serviceHost.Closing += _serviceHost_Closing;
_serviceHost.Closed += _serviceHost_Closed;
_serviceHost.Opened += _serviceHost_Opened;
_serviceHost.UnknownMessageReceived += _serviceHost_UnknownMessageReceived;
_serviceHost.Opened();
我最后的手段是创建一个任务,每隔一段时间轮询服务以检测服务是否已连接。
【问题讨论】: