在向同一個地址短時間內連續發送 HttpWebResponse.GetResponse() 的時候總會遇到 基礎連接已經關閉: 服務器關閉了本應保持活動狀態的連接。
遇到這種情況應該是http時間的問題,軟件或硬件負載平衡環境包含那些支持 HTTP 1.1 和 keep-alive 連接, 服務器中承載 Web 服務調用可能具有終止按時間,
客戶端嘗試重用該連接。
如果此錯誤仍然出現應用此修復程序后, 請嘗試下列解決方案:(兩種方式)
一、服務器上修改
1. 打開 MicrosoftInternet 信息服務器 (IIS) 管理控制台並找到 Web 服務器。
2. 單擊 網站 選項卡的 屬性 頁為 Web 站點。
3. 單擊以清除 保持連接 - 啟用 HTTP 復選框。
二、代碼上
可能需要禁用 keep-alive
1. 將 HttpWebRequest 類的 KeepAlive 屬性設置 為 false 。
2. 改寫由 MicrosoftVisualStudio.NET 生成有關 Web 客戶端代理 Reference.cs 文件中 HttpWebRequest 方法。
以下代碼替代 HttpWebRequest 方法。
protected override WebRequest GetWebRequest(Uri uri) { HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri); webRequest.KeepAlive = false; return webRequest; }