2013-08-05 114 views
2

我使用双工模式开发WCF服务并使用nettcpbinding。我使用.NET 4.5。我只有一个客户端和一个服务器,并且它之间有很多逻辑。客户始终第一次开始与服务器的通信。我希望该服务器可以调用WCF服务类之外的客户端函数。我尝试为此使用双工模式。WCF双工:调用外部WCF服务的回调函数

这是我的WCF服务:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single)] 
public class Service : IService 
{ 

... 

    public IServiceCallback Callback 
    { 
     get 
     { 
      return OperationContext.Current.GetCallbackChannel<IServiceCallback>(); 
     } 
    } 
} 

我没有问题,当我打电话给我服务的OperationContract的职能范围内我的回调:

Callback.foo(); 

但是,当我试图把它课外服务例如:

service = new Service(); 
service.Callback.foo(); 

我得到了OperationContext.Current的NullReferenceException。我发现了很多关于SO和其他资源类似问题的信息,但它无法帮助我确定我的问题。 有没有我的问题的任何解决方案或可能是调用回调的解决方法?目前我打算为我的目的创建一个WCF服务,但我觉得这是一个糟糕的解决方案。感谢您的关注。

回答

1

OperationContext.Current仅在处理当前客户端请求的同一线程运行时才有意义。你没有具体说明你从哪里调用。