我有一个WCF Duplex net.tcp绑定。我创建了一个客户端DuplexClient来与服务器进行通信。如果由于某种原因服务停止响应(应用程序池回收例程)在客户端创建和方法调用之间,我得到一个奇怪的行为。
try
{
var result = await client.SomeMethod();
}
catch (Exception ex)
{
Console.WriteLine($"client.State = {client.State}");
Console.WriteLine($"Error : {ex.Message}");
}
我在控制台中有这条消息:
client.State =已打开
错误:通讯对象, System.ServiceModel.Channels.ClientFramingDuplexSessionChannel,不能 用于通信,因为它处于Faulted状态。
当错误表明它处于故障状态时,通道如何处于打开状态?我强烈怀疑ClientFramingDuplexSessionChannel类型,因为它可能保持从服务器到客户端的开放通道,而客户端到服务器通道已经死亡。可能吗 ?如何检查客户端是否真正打开并以两种方式运行?