2013-02-22 51 views
0

我有一个客户机/服务器体系结构的.NET服务,客户机通过软件负载平衡器连接到服务器机器。我将HttpWebRequest.ServicePoint.ConnectionLeaseTimeout属性设置为一个特定值,以便连接每隔一段时间终止,并且在服务器行为异常的情况下,SLB会给客户端一个新的连接到不同的(或可能相同的)服务器。HttpWebRequest底层连接关闭事件/通知

我的问题是:

是否有启动每当ConnectionLeaseTimeout间隔耗尽得到通知的方式和新的服务器的新连接?我希望每次发生这种情况时都要记录新服务器的信息,以确保我确实正在更新连接,而不是仅仅持有某台计算机的时间超过了我应该的时间。

我希望有一些内置的支持这种情况下,我不必存储当前主机的信息,并不断检查每一次(每隔几个请求或每隔一段时间),我'与新服务器连接(通过与之前的比较)并跟踪变化的时间。即使我这样做了,也无法确定是否在两个连续的时间间隔内我连接到同一台服务器,因为我没有发布第一个连接,或者因为SLB给了我同一台服务器。

回答

0

租约超时的问题在于,您不知道何时(在您的代码中)它将发生,因为它将与您的代码异步。所以,如果它确实通知你一个断开连接,它将不得不在一些工作线程,你只需要存储这些信息,并使用它,当你的主线程已经到了可以做任何事情的地步信息。这一点通常是您下次想要使用网络请求做些事情。所以,你可以做的唯一真正的事情就是检测下一次使用请求的结果WebException

+0

我明白了你的观点,但现在我只想记录可以在并发线程上发生的事件...为了给您更多的上下文,SLB人员声称我也坚持使用这些机器很长,我想向他们证明情况并非如此,SLB实际上一直在给我同样的机器。 – 2013-02-23 00:51:19

+0

没有事件。你必须尝试发送连接上的东西,看看它是否仍然连接。如果它是http,你可能无法做到这一点。 – 2013-02-23 02:45:53

+0

谢谢你们。只是想确保在实现某些功能之前没有开箱即用的解决方案...... – 2013-02-24 20:12:51

相关问题