c# - 内存不足异常 - 读取 HttpWebRequest 的大文本文件

标签 c# httpwebrequest streamreader

我正在尝试读取 500 MB 文本文件以通过 HttpWebRequest 发送其内容。根据我的要求,我无法分块发送数据。代码如下:

using (StreamReader reader = new StreamReader(filename))
{
    postData = reader.ReadToEnd();
}

byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "text/plain";
request.ContentLength = byteArray.Length;

Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();

WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);

dataStream = response.GetResponseStream();

using (StreamReader reader = new StreamReader(dataStream))
{
    responseFromServer = reader.ReadToEnd();
}

Console.WriteLine(responseFromServer);
dataStream.Close();
response.Close();

读取如此大的文件会导致内存不足异常。有什么办法可以做到这一点吗?

最佳答案

听起来您可能遇到 this documented issue with HttpWebRequest 。根据知识库文章,尝试将 HttpWebRequest.AllowWriteStreamBuffering 属性设置为 false

关于c# - 内存不足异常 - 读取 HttpWebRequest 的大文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640844/

相关文章:

c# - 使用正则表达式解析多行日志条目

c# - WPF HTTPWebRequest 底层连接已关闭 : An unexpected error occurred on a receive

带边界的 C# HTTP POST

apache - 对 Tomcat Web 服务器上资源的 HTTP 请求是否会锁定该资源?

c# - 如何为 Microsoft 的 .NET 4 C# 编译器指定 .NET 版本?

c# - 将 int 转换为 ascii char c#

C# 获取 Firefox 中所有打开页面的 URL

c# - 我的 StreamReader 只从我的 4 行文本文件中读取第二行和第四行

c# - .NET 3.5 C# StreamReader 读取 ISO-8859-1 字符不正确

c# - 我的 UWP 应用无法读取 txt 文件