假设我有这样的 WCF 服务合同
[ServiceContract(CallbackContract = typeof(ICallback1),
SessionMode = SessionMode.Required)]
public interface IService1
{
// some methods
}
服务实现已经InstanceContextMode.Single
设置InstanceContextMode
并且ICallback1
类似于
public interface ICallback1
{
[OperationContract]
void Report(int someValue);
}
现在在客户端,我可以有一个实现 ICallback1 的类
class Callback1 : ICallback1
{
public void Report(int someValue)
{
// alert client
}
}
我创建这样的客户服务参考
Service1Client serviceClient = new Service1Client(new InstanceContext(new CallBack1()));
效果很好。现在的问题是我有一些对回调不感兴趣的客户端所以我想我不需要为这些客户端实现回调接口所以我尝试了这个
Service1Client serviceClient = new Service1Client(null);
和
Service1Client serviceClient = new Service1Client(new InstanceContext(null));
双方都报告说parameter cannot be null
。我的问题是,如果客户端对回调不感兴趣,我如何在不传递回调对象的情况下创建服务引用。唯一的要求是所有客户端都应该与同一个服务通信,否则我可以重组服务。有什么想法吗 ?
编辑:
我也尝试过 SessionMode = SessionMode.Allowed
使用 ServiceContract 来代替,SessionMode.Required
但这也无济于事。