2013-11-14 25 views
0

我正在爲Windows Store開發一個休息客戶端應用程序。一切進展順利,直到收到的迴應小於64K。我不知道如何繼續。我嘗試過使用HttpClient,檢查應用程序功能,並搜索大多數屬性以獲得任何解決方案,但沒有成功。System.Net.WebException:底層連接已關閉:已超出郵件長度限制

大多數人建議在Windows Store應用程序中設置HttpWebRequest.DefaultMaximumResponseHeadersLength或HttpWebRequest.MaximumResponseHeadersLength,但這些屬性不可用(?)。也許我錯過了一些參考。無論如何,任何建議都會有所幫助,因爲我用盡了每一個想法。

異常我越來越:

System.Net.Http.HttpRequestException:發送 請求時發生錯誤。 ---> System.Net.WebException:底層連接 已關閉:已超出消息長度限制。

在System.Net.HttpWebRequest.EndGetResponse(IAsyncResult的 asyncResult)
在 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult的AR)

---內部異常堆棧跟蹤的結尾---

在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務 任務)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務 任務)
在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()...

+0

完全無關的問題(參見:除外) – tomqz

+0

點接受和接近的選票中刪除。 – Sheridan

回答

0

嘗試使用HttpClient.GetAsync()HttpCompletionOption.ResponseHeadersRead。這樣,響應不會被緩存。

即:

private async void Foo() 
{ 
    HttpClient client = new HttpClient(); 

    // Do not cache response, use HttpCompletionOption.ResponseHeadersRead. 
    HttpResponseMessage response = await client.GetAsync(
     "http://localhost/?big=2000000000", 
     HttpCompletionOption.ResponseHeadersRead); 

    // Consume response as a System.IO.Stream. 
    Stream contentStream = await response.Content.ReadAsStreamAsync(); 

    int bytesRead; 
    do 
    { 
     byte[] buffer = new byte[1000000]; 
     bytesRead = contentStream.Read(buffer, 0, buffer.Length); 
    } while (bytesRead > 0); 
} 
+0

同樣的效果,沒有區別。問題仍然沒有解決。 GetAsync引發的異常。 – tomqz

+0

你確定它是同一個異常,它來自GetAsync?此外,您必須使用ReadAsStreamAsync消耗響應。在這種情況下提琴手的痕跡可能會有所幫助。 – kiewic

+0

是的,我確定我會消費這條消息。任何其他想法? – tomqz

相關問題