Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF检测ServiceHost是否可用_C#_Windows_Wcf - Fatal编程技术网

C# WCF检测ServiceHost是否可用

C# WCF检测ServiceHost是否可用,c#,windows,wcf,C#,Windows,Wcf,我有两个通过WCF通信的C#应用程序,其中一个有一个带有NetNamedPipeBinding端点的ServiceHostsingleton对象,客户端通过DuplexChannelFactory.CreateChannel()调用创建一个公开接口的实例。有时,我的客户端会在服务器之前启动,因此客户端需要知道服务器是否可用。无论如何,CreateChannel()调用都会成功,但随后对接口函数的调用会失败,并出现异常。一旦调用失败,之后的任何调用都会失败,并出现通道故障的错误。是我捕捉这些异常并

我有两个通过WCF通信的C#应用程序,其中一个有一个带有
NetNamedPipeBinding
端点的
ServiceHost
singleton对象,客户端通过
DuplexChannelFactory.CreateChannel()
调用创建一个公开接口的实例。有时,我的客户端会在服务器之前启动,因此客户端需要知道服务器是否可用。无论如何,
CreateChannel()
调用都会成功,但随后对接口函数的调用会失败,并出现异常。一旦调用失败,之后的任何调用都会失败,并出现通道故障的错误。是我捕捉这些异常并每次创建一个新频道的唯一选择,还是有更好的方法

谢谢,
J

由于网络故障等多种原因,通道随时可能出现故障。这意味着答案是肯定的,您需要处理故障通道


我通常在每次需要时都会创建一个新通道(我在我的控制反转容器中使用瞬态/作用域生存期注册通道)。

由于网络故障等多种原因,通道随时可能出现故障。这意味着答案是肯定的,您需要处理故障通道


我通常在每次需要时创建一个新通道(我在我的控制反转容器中用瞬态/作用域生存期注册通道)。

这就是我所期望的,只是想看看是否有一些神奇的
IsAvailable()
方法我应该使用。谢谢。可能会有这样的事,但我不知道。@JWood:没有这样的方法-而且,即使有-也只能告诉你频道现在是否在那里-一秒钟后,它可能已经消失了(电缆断开,服务器停机-你可以说)。因此,这样做是毫无意义的——在使用WCF时,您始终需要准备好处理异常……这正是我所期望的,只是想看看是否有一些神奇的
IsAvailable()
方法我应该使用。谢谢。可能会有这样的事,但我不知道。@JWood:没有这样的方法-而且,即使有-也只能告诉你频道现在是否在那里-一秒钟后,它可能已经消失了(电缆断开,服务器停机-你可以说)。因此,拥有这样的东西是毫无意义的-在使用WCF时,您始终需要准备好处理异常。。。