0

我有一个带有客户端/服务器架构的 .NET 服务,其中客户端机器通过软件负载平衡器连接到服务器机器。我将该HttpWebRequest.ServicePoint.ConnectionLeaseTimeout属性设置为特定值,以便每隔一段时间终止连接,并且 SLB 将为客户端提供与不同(或可能相同)服务器的新连接,以防服务器行为异常。

我的问题是:

ConnectionLeaseTimeout有没有办法在间隔用完并启动到新服务器的新连接时得到通知?每次发生这种情况时,我都想记录新服务器的信息,以确保我确实在更新连接,而不仅仅是在某台机器上停留的时间超过了我应该的时间。

我希望对这种情况有一些内置支持,并且我不必存储当前主机的信息并每隔一段时间(每隔几个请求或每个时间间隔)检查我连接到一个新服务器(通过与以前的比较)并跟踪更改时间。即使我这样做了,也无法判断我是否在两个连续的时间间隔内连接到同一台服务器,因为我没有释放第一个连接,或者因为 SLB 将我还给了同一台服务器。

4

1 回答 1

0

租约超时的问题是您不知道(在您的代码中)它何时会发生,因为它与您的代码是异步的。因此,如果它确实通知您断开连接,则它必须在某个工作线程上,您只需存储该信息并在您的主线程到达可以对该信息执行任何操作的地步时使用它。这通常是您下次想要对 Web 请求执行某些操作时。因此,您可以做的唯一真正的检测是WebException在下一次使用请求时简单地捕获结果。

于 2013-02-23T00:38:52.853 回答