我使用双工模式开发WCF服务并使用nettcpbinding。我使用.NET 4.5。我只有一个客户端,只有一个服务器,它之间有很多逻辑。客户端始终首先开始与服务器通信。我希望该服务器可以在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之外调用它时,例如:
service = new Service();
service.Callback.foo();
我得到了OperationContext.Current的NullReferenceException。我发现了很多关于SO和其他资源上类似问题的信息,但它无法帮助我决定问题。 我的问题是否有任何解决方案,或者可能是调用回调的解决方法?目前我计划为我的目的再创建一个WCF服务,但我觉得这是一个糟糕的解决方案。谢谢你的关注。
答案 0 :(得分:1)
OperationContext.Current只有在从处理当前客户端请求的同一线程运行时才有意义。您没有指定从何处调用它。