3
我有一個ServiceStack服務,它具有處理GET請求的方法。該方法返回二進制數據。在Mono + FastCGI中託管ServiceStack時,二進制數據損壞
public object Get(DownloadFile request) {
return new HttpResult(new FileInfo("some file"), "application/octet-stream", asAttachment: true);
}
在宿主是Windows中,它工作正常,但當我與單聲道+ FastCGI的運行它在Linux中我下載的數據是不一樣的。
我分析了幾個文件的返回字節,並得出結論是有一個模式。數據正在以這種方式包裝:
original data size + \r\n + original data + \r\n\r\n0\r\n\r\n
爲什麼會發生這種情況,以及如何解決它?
編輯:
原來這是由於分塊的傳輸,其是HTTP 1.1的一部分。
Knocte的回答我指出了正確的方向,我能夠強迫我的請求使用HTTP 1.0來解決此問題:
var req = (HttpWebRequest)WebRequest.Create(url);
req.ProtocolVersion = new Version("1.0");
我並不需要嘗試通過knocte建議的補丁,但它看起來是解決問題的正確方法,而不是像我一樣避免它。