1

我的ASP.NET應用程序返回JSON對象給用戶,它包含二進制編碼的數據。由於這個原因,我決定啓用HTTP壓縮,並以Content-Length開始。內容長度和httpCompression兩難

如果我啓用壓縮,Content-Length頭將被忽略,而響應發送並且連接沒有立即關閉。所有數據發送完成後,連接仍處於打開狀態約15秒。

我想啓用HTTP壓縮,但不知道如何解決Content-Length頭的問題。

context.Response.AddHeader("Content-Length", jsonObject.ToString().Length.ToString()); 
context.Response.Write(jsonObject); 
context.Response.Flush(); 
context.Response.Close(); 
+0

這裏有什麼問題?請澄清您希望我們提供的幫助。 –

+0

除了連接打開一段時間之外,還有什麼問題? – jgauffin

+0

問題是連接在數據發送後約15秒未關閉。此代碼用於在線API,如果連接未關閉,則客戶端保持連接狀態。如果添加了Content-Length,那麼一切工作正常,數據發送後連接將被關閉。在HTTP壓縮中,不幸的Content-Length被忽略。如何擁有內容長度和HTTP壓縮? – Tomas

回答

2

Content-Length代表正在傳輸的數據的長度,你的情況是壓縮字節。看到這個問題的答案鏈接到相關的RFC:content-length when using http compression

如果HTTP壓縮是通過網絡服務器(而不是您的代碼)發生,那麼我會建議您嘗試添加自己的內容長度標題。希望Web服務器能夠正確添加它。

如果您查看開發人員控制檯,您會看到Content-Length比實際未壓縮頁面小得多,可以使用Chrome上的http://httpd.apache.org/進行驗證。