- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
OperationContext.Current.GetCallbackChannel 实际上做了什么?它如何识别每个客户?
我的 WCF 服务遇到问题。如果超过两个用户连接到该服务,我从服务发送到客户端的所有“有趣的更改”都将发送给第二个加入的用户。
例如,如果 A、B、C、D 加入服务,如果我通过回调将更改发送给 C 和 D,它将发送给 B。
有什么想法吗?
详细信息:
客户端:ASP.NET 网络应用
绑定(bind):netTCPBinding
更新1
好的,我已经找到问题的原因了。我在 IIS 中托管了 asp.net 客户端。例如客户端的 URL 是 http://url1 .如果我在不同的机器上打开页面的多个实例并加入服务,回调 channel 总是指向页面的第一个实例(我从不同的机器打开网站)。但是,如果我在 IIS 的不同站点下托管 asp.net 客户端,则回调 channel 是唯一的。对此有什么想法吗?
最佳答案
当服务收到调用时,OperationContext.Current.GetCallbackChannel 返回一个 channel 给那个调用者。它不会返回向所有客户端广播的 channel 。
根据您的问题,您可能只存储了在上次调用中检索到的回调。您实际上必须存储一个列表,其中包含已检索到的每个唯一回调实例。每次调用方法时,都会将回调实例添加到此列表中。当您想要广播时,您必须遍历列表中的每个项目并进行必要的调用。
如果您的服务使用单例实例模式,则实现对象可以将回调实例列表存储为数据成员。如果您的服务使用 Client 或 SingleCall 实例模式,那么您可以拥有一个包含回调实例列表的全局对象。
关于c# - "OperationContext.Current.GetCallbackChannel"实际上是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3171405/
OperationContext.Current.GetCallbackChannel 实际上做了什么?它如何识别每个客户? 我的 WCF 服务遇到问题。如果超过两个用户连接到该服务,我从服务发送到客
我正在使用OperationContext.Current.GetCallbackChannel 获取调用WCF 服务操作的客户端的 channel 。 我是否需要担心关闭/处置这些回调 channe
我是一名优秀的程序员,十分优秀!