c# - WCF 双工 : calling callback outside class of WCF-service

标签 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 = new Service(); 
service.Callback.foo();

我得到了 OperationContext.Current 的 NullReferenceException。我在 SO 和其他资源上找到了很多关于类似问题的信息,但这无助于解决我的问题。 我的问题是否有任何解决方案或调用回调的解决方法?目前我计划为我的目的再创建一个 WCF 服务,但我觉得这是一个糟糕的解决方案。感谢关注。

最佳答案

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

关于c# - WCF 双工 : calling callback outside class of WCF-service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062592/

相关文章:

c# - 如何在 C# 中处理双重解析中的文化?

C# 运算符重载 ==

c# - 为 Entity Framework CPT5 构建 EntityTypeConfiguration 列表的反射(reflection)

.net - 通过 JSON 将流和参数解析为 WCF 操作契约(Contract)

wcf - Azure 服务总线中继响应缓慢

c# - Ninject WCF 扩展时间服务示例如何工作?

c# - 可空属性与可空局部变量

java - 如何检测 Active Directory 用户帐户的重命名或移动操作?

c# - 无法使用 C++/CLI 界面的属性

c# - Entity Framework 4 和 Web Api 的匿名类型转换问题