C# WCF检测ServiceHost是否可用
我有两个通过WCF通信的C#应用程序,其中一个有一个带有C# WCF检测ServiceHost是否可用,c#,windows,wcf,C#,Windows,Wcf,我有两个通过WCF通信的C#应用程序,其中一个有一个带有NetNamedPipeBinding端点的ServiceHostsingleton对象,客户端通过DuplexChannelFactory.CreateChannel()调用创建一个公开接口的实例。有时,我的客户端会在服务器之前启动,因此客户端需要知道服务器是否可用。无论如何,CreateChannel()调用都会成功,但随后对接口函数的调用会失败,并出现异常。一旦调用失败,之后的任何调用都会失败,并出现通道故障的错误。是我捕捉这些异常并
NetNamedPipeBinding
端点的ServiceHost
singleton对象,客户端通过DuplexChannelFactory.CreateChannel()
调用创建一个公开接口的实例。有时,我的客户端会在服务器之前启动,因此客户端需要知道服务器是否可用。无论如何,CreateChannel()
调用都会成功,但随后对接口函数的调用会失败,并出现异常。一旦调用失败,之后的任何调用都会失败,并出现通道故障的错误。是我捕捉这些异常并每次创建一个新频道的唯一选择,还是有更好的方法
谢谢,
J由于网络故障等多种原因,通道随时可能出现故障。这意味着答案是肯定的,您需要处理故障通道
我通常在每次需要时都会创建一个新通道(我在我的控制反转容器中使用瞬态/作用域生存期注册通道)。由于网络故障等多种原因,通道随时可能出现故障。这意味着答案是肯定的,您需要处理故障通道
我通常在每次需要时创建一个新通道(我在我的控制反转容器中用瞬态/作用域生存期注册通道)。这就是我所期望的,只是想看看是否有一些神奇的
IsAvailable()
方法我应该使用。谢谢。可能会有这样的事,但我不知道。@JWood:没有这样的方法-而且,即使有-也只能告诉你频道现在是否在那里-一秒钟后,它可能已经消失了(电缆断开,服务器停机-你可以说)。因此,这样做是毫无意义的——在使用WCF时,您始终需要准备好处理异常……这正是我所期望的,只是想看看是否有一些神奇的IsAvailable()
方法我应该使用。谢谢。可能会有这样的事,但我不知道。@JWood:没有这样的方法-而且,即使有-也只能告诉你频道现在是否在那里-一秒钟后,它可能已经消失了(电缆断开,服务器停机-你可以说)。因此,拥有这样的东西是毫无意义的-在使用WCF时,您始终需要准备好处理异常。。。