假定你有幾行代碼的ASP.NET頁面:IIS 7.0大文件傳輸:「無法從傳輸連接讀取數據:連接已關閉。」
while (true)
{
byte[BUFFER_SIZE] buffer;
// Fill buffer with pseudo data
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}
你也有一個測試應用程序與這些代碼行上述頁面:
while (readBytes != 0)
{
byte[BUFFER_SIZE] buffer;
readBytes = stream.Read(buffer, 0, buffer.length)
}
而不是閱讀真正的巨大文件,我試圖隨時產生隨機二進制數據並轉移到客戶端,它工作正常。然後,我寫了一個客戶端,他只是從ASP.NET頁面讀取字節,然後不做任何事情,只是讀取下一個字節,直到ASP.NET頁面關閉連接(下載完成)。我在ASP.NET頁面中使用了基於時間的設置來完成下載(這是一個壓力測試)。
因此,IIS 7.0和ASP.NET正在做的是流數據一段時間(即一小時)。我在此頁面上啓動了100個併發客戶端,平均下載速度爲250 KB /秒,時間爲一小時。一切正常約45分鐘,但突然IIS關閉客戶端上的此錯誤代碼的所有連接:
無法從傳輸連接讀取數據:連接已關閉。
我想這是關於通過IIS傳輸大量的二進制數據,應該有一些IIS 7.0中的配置,這是由我的壓力測試觸發的,但是哪種配置。
您是否檢查過服務器上的事件日誌? – 2010-10-09 22:18:16
是的,它只記錄請求的細節,僅此而已。 IIS日誌記錄可能需要一些配置? – Xaqron 2010-10-09 22:21:55