0
我試圖通過HTTP使用IIS將動態生成的數據流式傳輸到客戶端,並且連接必須長時間保持打開狀態,服務器在執行耗時的操作時會定期向客戶端發送狀態更新。如何強制IIS發送響應頭而不發送響應正文並關閉連接
這必須在一個請求中處理,但我使用的是一個WebClient.OpenRead()
流,在發送標頭之前無法打開它。
如何強制IIS向客戶端發送標頭,然後發送響應正文?
我試圖通過HTTP使用IIS將動態生成的數據流式傳輸到客戶端,並且連接必須長時間保持打開狀態,服務器在執行耗時的操作時會定期向客戶端發送狀態更新。如何強制IIS發送響應頭而不發送響應正文並關閉連接
這必須在一個請求中處理,但我使用的是一個WebClient.OpenRead()
流,在發送標頭之前無法打開它。
如何強制IIS向客戶端發送標頭,然後發送響應正文?
此行爲通常通過將KeepAlive設置爲true並將Expect標題設置爲「100並繼續」來實現。通過這樣做,服務器將發送結果代碼爲100的標頭。
我不確定這是否可以使用WebClient。
改爲使用HttpWebRequest來設置上面的值。實際上WebClient沒有什麼神奇的,但是使用GET來獲取數據。下面是在反射調用打開讀取代碼:
try
{
request = this.m_WebRequest = this.GetWebRequest(this.GetUri(address));
Stream responseStream = (this.m_WebResponse = this.GetWebResponse(request)).GetResponseStream();
if (Logging.On)
{
Logging.Exit(Logging.Web, this, "OpenRead", responseStream);
}
stream2 = responseStream;
}
catch (Exception exception)
{
//
那是不行的,因爲兩者保持活動和期待是頭,這是不被髮送,直到身體有任何的內容。由於程序的性質,在服務器上的整個操作完成之前,套接字連接無法以任何理由關閉,並且所有狀態更新都已發送到客戶端。我試圖找到一種方法發送正文之前發送標題。 – IDWMaster 2010-12-07 00:41:11