WCF双工合同

Bal*_*a R 6 c# wcf duplex

说我有这样的WCF服务合同

[ServiceContract(CallbackContract = typeof(ICallback1),
SessionMode = SessionMode.Required)]
public interface IService1
{
  // some methods
}
Run Code Online (Sandbox Code Playgroud)

服务实现已InstanceContextMode.Single设置为InstanceContextMode 和之ICallback1类似

public interface ICallback1
{
    [OperationContract]
    void Report(int someValue);
}
Run Code Online (Sandbox Code Playgroud)

现在在客户端,我可以有类实现ICallback1

class Callback1 : ICallback1
{
    public void Report(int someValue)
    {
        // alert client
    }
}
Run Code Online (Sandbox Code Playgroud)

我像这样创建客户服务引用

Service1Client serviceClient = new Service1Client(new InstanceContext(new CallBack1())); 
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.现在的问题是我有一些客户端对回调不感兴趣所以我认为我不需要为这样的客户端实现回调接口所以我试过这个

 Service1Client serviceClient = new Service1Client(null);
Run Code Online (Sandbox Code Playgroud)

 Service1Client serviceClient = new Service1Client(new InstanceContext(null));
Run Code Online (Sandbox Code Playgroud)

两人都报道了parameter cannot be null.我的问题是,如果客户端对回调不感兴趣,如何在不传递回调对象的情况下创建服务引用.唯一的要求是所有客户端都应该使用相同的服务,但我可以重新构建服务.有什么想法吗 ?

编辑:

我也试过 SessionMode = SessionMode.AllowedServiceContract而不是,SessionMode.Required但也没有帮助.

Edw*_*rey 2

解决方法:从 IService1 中删除 CallbackContract。创建继承 IService1 并包含 CallbackContract 的 IDuplexService1。让 Service1Client 实现 IDuplexService1。实例化主机时,调用ServiceHost.AddServiceEndpointIService1 和 IDuplexService1。