【发布时间】:2018-06-08 10:06:00
【问题描述】:
我正在使用我的应用程序中的 .NET HttpClient 来访问 Web 服务。问题是 Web 服务是通过 ISP 负载平衡器访问的,并且应用程序已经安装在客户处(现在无法更新)。如果负载均衡器更改为另一个 ISP,连接将保持活动状态,请求将超时。
我可以在应用配置文件中为ServicePoint设置ConnectionLeaseTimeout吗?
【问题讨论】:
我正在使用我的应用程序中的 .NET HttpClient 来访问 Web 服务。问题是 Web 服务是通过 ISP 负载平衡器访问的,并且应用程序已经安装在客户处(现在无法更新)。如果负载均衡器更改为另一个 ISP,连接将保持活动状态,请求将超时。
我可以在应用配置文件中为ServicePoint设置ConnectionLeaseTimeout吗?
【问题讨论】:
TL;DR:我认为你不走运。
您可以使用 <servicePointManager> 配置元素 (configuration/system.net/settings/servicePointManager) 配置一些全局默认值。不幸的是,连接租约超时似乎没有可更改的默认值。
此外,似乎无法通过配置对特定端点执行任何设置。
也许您正在访问的网络服务可能会对连接保持打开的时间施加某种限制。如果您考虑一下,控制该策略对他们来说是有意义的,因为他们正在对他们的服务进行负载平衡。
【讨论】:
当然,您可以在配置中指定 ConnectionLeaseTimeout。但是,您还必须阅读该值并应用它。您还提到您无法更新您的应用,所以我不确定这些信息将如何帮助您。
有关代码示例,请参阅here。第 550 行并查找 ConnectionLeaseTimeout。
【讨论】: