我有一个由 net.tcp 绑定配置的 WCF 服务。我可以通过客户端访问服务并可以调用它的方法。我也可以到达 OperationContext.Current。如:
[ServiceContract(CallbackContract = typeof(IServiceCallback))]
public interface IService
{
    [OperationContract(IsOneWay = true)]
    void Register();
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class Service :IService
    {
        public void Register()
        {
             CallBacker.Client = OperationContext.Current.
                                 GetCallbackChannel<IServiceCallback>();
        }
    }
}
public class CallBacker 
{
   public static IServiceCallback Client { get; set; }
   public void Call(string message)
   {
       Client.Test(message);
   }
}
当客户端调用 Service 的 Register 方法时,我可以看到通道存储在 CallBacker.Client 上,但是当我调用 CallBacker > Call(string message) 的“Call”方法时,客户端变为 null。
奇怪的是,当我将服务配置从 net.tcp 设置为 wsdualhttpbinding 时,它运行良好。net.tcp 和 wsdualhttpbinding 之间有什么不同会导致这个奇怪的问题吗?