情況IIS和RestSharp - >響應正文中斷40倍的錯誤?
似乎很簡單:我有一個服務上的IIS 7的客戶端數據發佈(應用/ JSON)運行,我驗證數據之前,我接受它。
如果我不接受它,我真的想返回一個406和〜相同的數據作爲身體(潛在改變/糾正)[1]。不幸的是,這導致截斷的響應主體aka無效的json。
要開始,讓我們能夠爲我的錯誤直通,因爲IIS試圖聰明,否則:
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
</httpErrors>
我的代碼的相關部分做的這個道德等價的:
HttpResponseBase response = context.HttpContext.Response;
response.StatusCode = StatusCode;
response.StatusDescription = StatusDescription;
if (!string.IsNullOrEmpty(ContentType))
response.ContentType = ContentType;
else
response.ContentType = "application/json";
if (ContentEncoding != null)
response.ContentEncoding = ContentEncoding;
using (var sw = new StreamWriter(response.OutputStream))
{
sw.Write(JsonConvert.SerializeObject(Data));
}
在客戶端,我目前在做一個幼稚的(找到與json截斷有關的問題)
var response = myRestClient.Execute(myRestRequest);
的問題
如果響應返回200狀態碼,我得到這個
response.ContentLength == 69345
response.RawBytes.Length == 69345
如果我改變什麼但返回的狀態碼(406在我的情況),返回非常相同的數據,我看到:
response.ContentLength == 69345
response.RawBytes.Length == 65536 // <--- Not! Good!
現在,65536是太神奇了,這個數字是宇宙射線的重合或重現性很高的結果。誰的現在試圖變得聰明,如果它的數據長度超過無符號長度,就會丟掉我的數據?我會嘗試潛入RestSharp代碼庫,但我真的懷疑IIS再次與我欺騙..
1:如果這是一個壞主意,請詳細說明原因?
實際內容是否被截斷? –
是的,內容被截斷。但RestSharp(謝謝,順便說一句!)不是從我能看到的。我真的只是通過電線獲得了這個字節數(根據Fiddler)。 –
嗯,我有一個類似的問題,但提琴手顯示從Tomcat服務器返回的完整的JSON內容 - 你有沒有得到任何與此? –