我有許多應用程序使用各種網絡技術,如SOAP,WCF服務,或只是簡單的XmlReader。但是,如果互聯網連接在錯誤的時間出現問題,它們似乎都會遇到同樣的問題,即錯過超時並無限地掛起。網絡調用永不超時
我已經在所有場景中將超時設置爲很小,例如爲WCF
closeTimeout="00:00:15" openTimeout="00:00:15"
receiveTimeout="00:00:15" sendTimeout="00:00:15"
或肥皂
_Session.Timeout = (int)TIMEOUT.TotalMilliseconds;
這些超時也通常被擊中,但它似乎有一些特殊情況下,如果互聯網在合適的時間下降時,呼叫將掛起和永不超時(使用同步調用)。
我正考慮在每次撥打電話時啓動計時器,並在計時器到期時使用相應的.Abort()
函數來取消呼叫。但是,我想知道是否有更簡單的方法來解決問題,並確保超時被擊中。
有誰知道爲什麼會出現這種情況,如果是這樣,乾淨/簡單/好的方法是確保電話總是超時?
新的領導 - 我認爲這可能與使用web引用(看起來像只來自.net 2)而不是服務引用有關。可能切換到服務引用將帶來更可靠的代碼?無論如何,我正在嘗試這種方式,看看它是否至少可以修復這些網絡電話。 – mike 2011-03-06 23:01:30