客户端多个IP导致remoting服务端事件回调客户端报错的问题
大家好:
我现在遇到个remoting的问题,场景是这样的:server采用单例,有一个事件,client可以订阅该事件,供server回调,正常情况下是实现功能了,但是当client有多个配置了IP地址的网络适配器时,server回调报异常:
System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 169.254.16.247:1603
Server stack trace:
在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
在 System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
在 System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket(EndPoint ipEndPoint)
在 System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket()
在 System.Runtime.Remoting.Channels.RemoteConnection.GetSocket()
在 System.Runtime.Remoting.Channels.SocketCache.GetSocket(String machinePortAndSid, Boolean openNew)
在 System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream)
在 System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
在 System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
在 SubscribeProxy.SubscribeProxyService.HandleUpdated(Object sender, UpdatedEventArgs args)
在 Publisher.Publisher.OnUpdated(Object obj)
其中的169.254.16.247是client端不使用的一块网卡的IP地址。如果我把该不使用的网卡禁用就可以解决。
不知道大家对该问题有没有更好的解决办法呢?或者在这种通过事件进行回调时,如何指定client端所使用的信道协议栈呢?被回调的是一个MarshalByRefObject类型的对象的方法,而不是client发布的remoting服务。