[英]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)將等待直到服務返回響應,然后中斷響應,導致自身超時錯誤。 結果,客戶端僅收到到達超時的通知。 此外,客戶端不會在一分鍾內(由負載均衡器設置),也不會在十分鍾內(由服務設置),但在服務返回響應時,將收到此錯誤。
我希望這對任何獲得類似行為的人都有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.