我有一个WCF服务和客户端。我通过
连接到WCFChannelFactoryBase≤(中 ≤(TChannel>)&GT).. :: CreateChannel。 方法
然后我引用了ICommunicationObject
WCF服务在连接或稍后关闭时可能无法正常工作。什么是正确的 检查WCF服务是否正常工作的方法。一种直接的方法是使用CommunicationException机制。但是ICommunicationObject.State属性呢?我应该检查一下 在任何WCF方法调用之前处于故障状态?什么是最佳做法?
答案 0 :(得分:14)
没有神奇的方法可以检查WCF服务是否正常工作 - 除了调用它并准备处理因不工作而产生的异常。
ICommunicationObject.State
只会告诉您客户端和服务器之间的通道是“故障”,如果先前的操作导致错误并且该错误未在服务器上正确处理(因此通道是“故障”,例如变得毫无用处。)
你可以 - 如果你控制电线的两端 - 包括一个“虚拟”ping方法(或者像返回服务的版本号之类的东西),以便能够先调用类似的东西,所以只需查看通信频道还活着。
但接下来:首先调用MyService.Ping()
并且如果服务不活动则必须处理可能的异常,然后调用实际方法,而不是仅调用MyService.MyMethod()
并处理任何相关的例外?