2011-09-19 94 views
2

我在一個項目中實現了一個自定義的IHttpModule,它過濾了文件上傳並提供上傳狀態。 我想讓自定義模塊儘早關閉連接(不想接收對方發送的所有數據,允許這些數據很大,保存輸入帶寬)。提前關閉連接到瀏覽器並返回響應狀態

使用HTTP協議有可能嗎?我試着發送「ContentLength:0」和「Connection:close」頭,刷新響應,關閉連接(HttpWorkerRequest.CloseConnection)。

workerRequest.SendStatus(400, "Bad request"); 
workerRequest.SendKnownResponseHeader(HttpWorkerRequest.HeaderContentLength, "0"); 
workerRequest.SendKnownResponseHeader(HttpWorkerRequest.HeaderConnection, "close"); 
workerRequest.FlushResponse(false); 
workerRequest.CloseConnection(); 
((HttpApplication)sender).CompleteRequest(); 

瀏覽器/ firefox響應顯示「連接重置」錯誤消息。 沒有任何從服務器接收任何數據/標題/狀態的跡象。

在此先感謝。

回答

1

http客戶端只有在完成發送數據後纔會做出響應。您應該修改客戶端以發出多個小尺寸的請求,以便可以向服務器發送響應,而不是讓服務器關閉連接(這不起作用,並且不像您已經測試過的那樣工作)。

檢查http://slfileupload.codeplex.com/中實現的http處理程序,瞭解它通常如何完成的示例。

+0

修改客戶端是不可能的,因爲它必須是瀏覽器 –

+0

那麼在這種情況下,瀏覽器也不會讀取狀態。發送狀態沒有意義。 –

+0

上傳進度;你總是要寫你自己的客戶端插件在閃光或silverlight –

相關問題