我正在为Windows商店开发一个休息客户端应用程序。一切顺利,直到收到的回复小于64K。我不知道该怎么办。我尝试使用HttpClient,检查应用程序功能,并搜索大多数属性以查找任何解决方案,但没有成功。
大多数人建议在Windows应用商店应用中设置HttpWebRequest.DefaultMaximumResponseHeadersLength或HttpWebRequest.MaximumResponseHeadersLength这些属性不可用(?)。也许我错过了一些参考文献。无论如何,任何建议都会有所帮助,因为我已经用尽了所有想法。
我得到的例外:
System.Net.Http.HttpRequestException:发送时发生错误 请求。 ---> System.Net.WebException:底层连接 已关闭:超出了邮件长度限制。
at 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 :(得分: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);
}