我无法从HttpWebResponse Stream接收超过268435456字节的文件

时间:2014-02-07 07:31:27

标签: c# asp.net silverlight

在我的项目中,silverlight客户端使用HttpWebRequest向http处理程序发送“POST”请求,并使用HttpWebResponse流从http处理程序获取响应(即zip文件)。在响应期间动态创建zip文件,以便http处理程序无法知道文件大小。如果zip文件大小低于268435456字节,http处理程序将完成响应而不会出现任何问题。但除此之外,HttpWebResponse流只获得268435456个字节,Stream.Read()返回零。在一些步骤之后,流被关闭并且HttpException(“远程主机关闭了连接。错误代码是0x800704CD。”)被抛出在http处理程序中。

客户端的代码段就在这里。

request.BeginGetResponse(new AsyncCallback(result =>
{
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
    using (var responseStream = response.GetResponseStream())
    {
        int read = 0;
        byte[] buffer = new byte[2048];
        while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0)
        {
            downloadStream.Write(buffer, 0, read);
        }
        ...
    }
}

如果大小超过268435456字节responseStream.Read(buffer, 0, buffer.Length))则返回零。首先,我认为这与web.config或IIS中的配置有关。但是当我使用html表单向浏览器上的http处理程序发送请求时,无论文件大小如何,我都可以获得整个zip文件。所以现在我认为这可能是HttpWebResponse类的问题。如果您对此问题或其他方法有任何疑问,请告诉我。

编辑。 我尝试在web.config中更改maxRequestLength,这对此问题毫无用处。

0 个答案:

没有答案