我使用双工模式开发 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 = new Service();
service.Callback.foo();
我得到了 OperationContext.Current 的 NullReferenceException。我在 SO 和其他资源上找到了很多关于类似问题的信息,但它无助于确定我的问题。我的问题是否有任何解决方案,或者可能是调用回调的解决方法?目前我计划为我的目的再创建一个 WCF 服务,但我觉得这是一个糟糕的解决方案。感谢关注。