C#:超时与经过的时间不匹配
C#: Timeout does not match elapsed time
我有一个连接到服务 (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”。
问题出在管理客户端与服务器连接的负载平衡器中。客户端和服务都配置为等待 10 分钟超时。但是,负载均衡器只有一分钟的时间,这就是超时比预期更早出现的原因。
我要求负载均衡器的管理员将其更改为 10 分钟,一切正常。
但是,向客户端报告超时的方式非常具有误导性,因为它表明设置的超时已经达到限制,而事实并非如此。
此外,负载均衡器管理服务中断的方式可能会产生误导,因为在我的例子中,负载均衡器 (F5) 会等待服务 returns 响应,然后,它会中断响应,引起它自己的超时错误。结果,客户端仅收到已达到超时的通知。此外,客户端不会在一分钟内(由负载均衡器设置)或 10 分钟内(由服务设置)收到此错误,而是在服务 returns 响应时收到此错误。
我希望这对任何有类似行为的人有所帮助。
我有一个连接到服务 (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”。
问题出在管理客户端与服务器连接的负载平衡器中。客户端和服务都配置为等待 10 分钟超时。但是,负载均衡器只有一分钟的时间,这就是超时比预期更早出现的原因。
我要求负载均衡器的管理员将其更改为 10 分钟,一切正常。
但是,向客户端报告超时的方式非常具有误导性,因为它表明设置的超时已经达到限制,而事实并非如此。
此外,负载均衡器管理服务中断的方式可能会产生误导,因为在我的例子中,负载均衡器 (F5) 会等待服务 returns 响应,然后,它会中断响应,引起它自己的超时错误。结果,客户端仅收到已达到超时的通知。此外,客户端不会在一分钟内(由负载均衡器设置)或 10 分钟内(由服务设置)收到此错误,而是在服务 returns 响应时收到此错误。
我希望这对任何有类似行为的人有所帮助。