HttpWebRequest底层连接已关闭事件/通知

时间:2013-02-22 23:18:01

标签: c# .net notifications httpwebrequest timeout

我有一个带有客户端/服务器架构的.NET服务,客户端机器通过软件负载均衡器与服务器机器建立连接。我将HttpWebRequest.ServicePoint.ConnectionLeaseTimeout属性设置为特定值,以便每次都终止连接,并且SLB会在服务器行为不正常的情况下为客户端提供与不同(或可能相同)服务器的新连接。

我的问题是:

有没有办法在ConnectionLeaseTimeout间隔用尽并且启动到新服务器的新连接时收到通知?我希望每次发生这种情况时都记录新服务器的信息,以确保我确实更新了连接,而不仅仅是按照某个机器持有的时间超过了我应该的时间。

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

1 个答案:

答案 0 :(得分:0)

租约超时的问题是你不知道它(在你的代码中)什么时候会发生,因为它会与你的代码异步。所以, if 它确实通知你断开连接,它必须在某个工作线程上,你只需要存储那些信息并在主线程到达某个点时使用它可以对这些信息做任何事情。这一点通常是下次您想要对Web请求执行某些操作时。因此,您可以做的唯一真实的事情就是在下次使用请求时捕获生成的WebException