假定你有几行代码的ASP.NET页面:IIS 7.0大文件传输:“无法从传输连接读取数据:连接已关闭。”
while (true)
{
byte[BUFFER_SIZE] buffer;
// Fill buffer with pseudo data
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}
你也有一个测试应用程序与这些代码行上述页面:
while (readBytes != 0)
{
byte[BUFFER_SIZE] buffer;
readBytes = stream.Read(buffer, 0, buffer.length)
}
而不是阅读真正的巨大文件,我试图随时产生随机二进制数据并转移到客户端,它工作正常。然后,我写了一个客户端,他只是从ASP.NET页面读取字节,然后不做任何事情,只是读取下一个字节,直到ASP.NET页面关闭连接(下载完成)。我在ASP.NET页面中使用了基于时间的设置来完成下载(这是一个压力测试)。
因此,IIS 7.0和ASP.NET正在做的是流数据一段时间(即一小时)。我在此页面上启动了100个并发客户端,平均下载速度为250 KB /秒,时间为一小时。一切正常约45分钟,但突然IIS关闭客户端上的此错误代码的所有连接:
无法从传输连接读取数据:连接已关闭。
我想这是关于通过IIS传输大量的二进制数据,应该有一些IIS 7.0中的配置,这是由我的压力测试触发的,但是哪种配置。
您是否检查过服务器上的事件日志? – 2010-10-09 22:18:16
是的,它只记录请求的细节,仅此而已。 IIS日志记录可能需要一些配置? – Xaqron 2010-10-09 22:21:55