我有一个连接到服务(webserviceSoap1)的应用程序,并且该服务具有下一个超时配置:
<binding name="webserviceSoap1"
openTimeout="00:10:00"
closeTimeout="00:10:00"
sendTimeout="00:10:00"
receiveTimeout="00:10:00">
据我了解,我在这里表示,所有超时都必须至少等待10分钟才能结束通信并获得 System.TimeoutException 。但是,这是我不了解的问题。大约2-3分钟后,我收到一个TimeoutException消息,该程序等待响应将近十分钟(这是不可能的),而在同一位置,它表示经过的时间约为两分钟
为什么要间隔时间?我是否正确配置绑定值?
如果我将超时值更改为“ 10:00:00”,它将正确完成该过程。但是,仍然使用“ 01:00:00”(据我所知是一个小时),该过程在4分钟后中断,说它在发送TimeoutException之前等待了“ 00:59:59.16472”。
答案 0 :(得分:0)
问题位于管理客户端到服务器连接的负载均衡器中。客户端和服务都配置为等待10分钟的超时。但是,负载均衡器只有一分钟,这就是为什么超时比预期的要早的原因。
我要求负载均衡器的管理员将其更改为10分钟,并且一切正常。
但是,向客户端报告超时的方式非常令人误解,因为它指出设置的超时已经达到了极限(如果不正确)。
此外,负载均衡器管理服务中断的方式可能会产生误导,因为在我的情况下,负载均衡器(F5)会等到服务返回响应,然后才会中断响应,从而产生它自己的超时错误。结果,客户端仅收到到达超时的通知。此外,客户端不会在一分钟内(由负载均衡器设置),也不会在十分钟内(由服务设置),但在该服务返回响应时,得到此错误。
我希望这对任何有类似行为的人都有帮助。