我有一个WCF实现,我在Windows服务(自托管)中托管它。我使用回调契约来触发客户端的一些事件。
问题是我如何确定或检查客户端是否仍然存在以触发其回调事件。有没有检查机制?我使用.NET 3.5。
感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
我遇到同样问题的方法是创建一个“DefaultCallback”类来实现回调接口并且什么都不做(当然它不会抛出任何Not ImplmentedException)。 然后你可以写一些像这样的代码:
private IServiceCallBack[] GetCallBack()
{
var returnValue = new IServiceCallBack[1];
var com = (ICommunicationObject)(returnValue[0] = OperationContext.Current.GetCallbackChannel<IServiceCallBack>());
com.Closing += new EventHandler((object sender, EventArgs e) =>
{
returnValue[0] = new DefaultCallBack();
});
com.Faulted += new EventHandler((object sender, EventArgs e) =>
{
returnValue[0] = new DefaultCallBack();
});
return returnValue;
}
因此,每当回调客户端处于关闭或故障状态时,它都会被一个不执行任何操作的兼容对象所取代。