日期:2014-05-18  浏览次数:20805 次

[WCF] 用WCF的TCP通道如何实现服务关闭和重启?
呃.. 问题很奇怪.
  ServiceHost用同样的配置“重启”后 客户端连接不上~

  我想实现的是: 一个ServiceHost 关闭了, 然后将这个ServiceHost的配置复制(Endpoint、binding、URL、端口), 实例化一个新的ServiceHost, 再启动一次,
然后客户端依然可以顺利连接.


  似乎很好实现? host.Close; host.Open;

  但问题是
  客户端连上了服务器端;
  客户端断开连接;
  服务器关闭;
  服务器启动;
  客户端再次连接时就会连接失败. 错误: 
There was no endpoint listening at net.tcp://204.18.122.40:9211/Trh/IAn5 that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

InnerException 里面什么也没有. Null

该ServiceHost是和其他几个ServiceHost共用一个端口的. (PortSharing).
其他ServiceHost也有这样的问题.

除非把服务器程序关闭, 重新打开再启动ServiceHost.

如何解决这样的问题?!

------解决方案--------------------
http://social.msdn.microsoft.com/forums/en-US/wcf/thread/c5888aed-ba6c-4a94-a58f-60a4ba92d97c
------解决方案--------------------
没有搞过,顺便跟着学习,up
------解决方案--------------------
用msmq的binding,这样服务端就算出现了问题,客户端的请求仍然可以被序列化到消息队列中。等服务端恢复的时候可以继续处理。