这个问题在这里已有答案:
考虑以下:
using (var fs = new StreamReader(filepath))
{
while (!fs.EndOfStream)
{
string line = fs.ReadLine();
}
}
如果filepath是一个包含很长行字符的文件(换行符之间有很多字符),则可能导致服务器在其中一个ReadLine()调用上耗尽内存。这是一种潜在的拒绝服务向量。
是否有任何C#类可以缓解此问题?我正在创建一个继承StreamReader的新类,并使用StreamReader.ReadBlock()方法读取有限的字符块,但是我必须处理逐行解析才能返回文件中的行。我想使用一些Framework类来做同样的事情。
你读取块,你只需要跟踪你在哪里
char[] buffer = new char[24];
while (!r.EndOfStream)
{
bytesRead = r.ReadBlock(buffer, 0, buffer.Length);