C# 获取wcf服务的已连接客户端列表
如何为servicehost的所有已连接客户端枚举某种位置标识符?我正在使用双工连接进行长时间运行的计算。服务主机是单例的C# 获取wcf服务的已连接客户端列表,c#,wcf,.net-3.5,ip,net.tcp,C#,Wcf,.net 3.5,Ip,Net.tcp,如何为servicehost的所有已连接客户端枚举某种位置标识符?我正在使用双工连接进行长时间运行的计算。服务主机是单例的 我可以计算出(在.net 3.5中)呼叫客户端的ip,但我不确定如何获取所有连接客户端的ip。我认为没有任何内置功能,但是构建一个跟踪IServiceBehavior+IDispatchMessageInspector非常容易,它将在调用发送到服务impl之前检查RemoteClientInputMessage属性,并将客户端IP粘贴到共享列表中,并在调用/会话结束时将其删
我可以计算出(在.net 3.5中)呼叫客户端的ip,但我不确定如何获取所有连接客户端的ip。我认为没有任何内置功能,但是构建一个跟踪IServiceBehavior+IDispatchMessageInspector非常容易,它将在调用发送到服务impl之前检查RemoteClientInputMessage属性,并将客户端IP粘贴到共享列表中,并在调用/会话结束时将其删除。默认情况下,WCF提倡使用“每次调用”服务,例如,您的客户端呼叫,请求得到处理,然后客户端立即再次断开连接 WCF本身不适用于长时间运行的连接,也不适用于长时间运行的连接,因此您无法真正“枚举当前连接的用户”,因为没有任何用户(或仅在几分之一秒内)
WCF不像Windows域服务器,您可以在其中登录并长时间保持登录状态。很抱歉,我在帖子中不清楚,但我没有使用默认的服务行为。[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single,ConcurrencyMode=ConcurrencyMode.Multiple)]与InstanceContextMode.Single有一个实例的使用寿命比默认的“每次调用”模式更长。当前实现的服务使用回调约定在结果准备就绪时发送结果。客户端缓存它与服务器的连接,以便它们可以用于多个请求。连接是长期运行的。好吧-我认为这不是一个好主意,但我不知道你的设置细节;不幸的是,在WCF 3.5中,对管理和监视没有太多的支持-这将是“都柏林”项目的一部分-IIS7/的管理附加组件计划在.NET 4(2010年3月)之后的某个时间发布。