WCF双工:在WCF服务类之外调用回调

时间:2013-08-05 16:00:41

标签: c# .net wcf web-services soap

我使用双工模式开发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服务,但我觉得这是一个糟糕的解决方案。谢谢你的关注。

1 个答案:

答案 0 :(得分:1)

OperationContext.Current只有在从处理当前客户端请求的同一线程运行时才有意义。您没有指定从何处调用它。

相关问题