C# 在WCF中检查客户端连接的最佳方法是什么

C# 在WCF中检查客户端连接的最佳方法是什么,c#,wcf,C#,Wcf,我有一个WCF服务和许多检索有关凭据信息的客户端。 我想监控这些客户机的列表,并检测是否有一些客户机突然死亡(由于连接丢失或应用程序崩溃或其他原因) 最好的方法是什么 据我所知,双工通信合同不是最好的解决方案 一种方法是实现“心跳”。为此,保留一个客户机集合。让客户端发送一条包含最少信息的简单消息(心跳消息) 在服务器端,设置一个逐出过程,定期查看客户机列表,查看是否有“过时”的客户机(即,您有一段时间没有收到心跳信号)。一种方法是实现“心跳信号”。为此,保留一个客户机集合。让客户端发送一条包含

我有一个WCF服务和许多检索有关凭据信息的客户端。 我想监控这些客户机的列表,并检测是否有一些客户机突然死亡(由于连接丢失或应用程序崩溃或其他原因) 最好的方法是什么


据我所知,双工通信合同不是最好的解决方案

一种方法是实现“心跳”。为此,保留一个客户机集合。让客户端发送一条包含最少信息的简单消息(心跳消息)


在服务器端,设置一个逐出过程,定期查看客户机列表,查看是否有“过时”的客户机(即,您有一段时间没有收到心跳信号)。

一种方法是实现“心跳信号”。为此,保留一个客户机集合。让客户端发送一条包含最少信息的简单消息(心跳消息)


在服务器端,设置一个逐出过程,定期查看客户机列表,查看是否有“过时”的客户机(即,您有一段时间没有收到心跳信号)。

除了捕获心跳信号之外,没有其他好方法可以做到这一点。您还可以查看事件以监视连接发生的情况

client.InnerChannel.Closed += OnChannelClosed;
client.InnerChannel.Opening += OnChannelOpening;
client.InnerChannel.Opened += OnChannelOpened;
client.InnerChannel.Closing += OnChannelClosing;
client.InnerChannel.Faulted += OnChannelFaulted;
client.InnerChannel.UnknownMessageReceived += OnChannelUnknownMessageReceived;

要做到这一点,除了抓到一只猫,实在没有什么好办法。您还可以查看事件以监视连接发生的情况

client.InnerChannel.Closed += OnChannelClosed;
client.InnerChannel.Opening += OnChannelOpening;
client.InnerChannel.Opened += OnChannelOpened;
client.InnerChannel.Closing += OnChannelClosing;
client.InnerChannel.Faulted += OnChannelFaulted;
client.InnerChannel.UnknownMessageReceived += OnChannelUnknownMessageReceived;
你的客户是如何“连接”的?WCF有点“宽泛”,因为可能有TCP,命名为管道。。。不是最具可扩展性的解决方案,但轮询应该始终有效……您的客户端是如何“连接”的?WCF有点“宽泛”,因为可能有TCP,命名为管道。。。不是最具可扩展性的解决方案,但轮询应该始终有效。。。