【发布时间】:2016-01-21 14:19:56
【问题描述】:
我有一个 WCF 服务器,它使用双工模型维护对客户端回调的引用。
如果我明确关闭服务器上的回调连接:
ICallBack callBack = OperationContext.Current.GetCallbackChannel<ICallBack>();
callBack.Close()
客户端无法通过订阅以下任一方式收到此事件的通知:
client.InnerChannel.Closed += Handler;
client.InnerDuplexChannel.Closed += Handler;
不执行任何事件处理程序。
但是,如果我在服务器端将回调更改为Abort 而不是Close,客户端会收到Faulted 处理程序的通知,然后是Closed 处理程序。所以中止按预期工作。
我检查了回调是否处于有效状态,那么为什么客户端在Abort 上收到Faulted 通知而不是在Close 上收到Closing 通知? Close之后的回调状态为Closed。
根据MSDN documentation,使用Close 优雅地关闭回调连接将是我的首选,而不是更突然的Abort。
【问题讨论】:
标签: c# wcf publish-subscribe duplex