我有以下功能块,当客户端在美国境内的某个地方访问服务器时,该功能块完成正常。但是,当客户端离东欧更远时,大文件的下载失败。关于如何模拟来自远程IP地址的流量的任何想法?或任何其他想法使这个下载更快。
这些文件很大,即100 MB。它们与提供网站的服务器位于同一服务器上。我正在使用C#.NET Framework 4.5 IIS 8
System.IO.Stream stream = null;
int bytesToRead = 262144;
byte[] buffer = new Byte[bytesToRead];
try
{
var response = HttpContext.Current.Response;
response.ClearContent();
response.Clear();
//get file from file system
string path = Properties.Settings.Default.DownloadDirectory + fileId;
var fileInfo = new FileInfo(path);
if (fileInfo.Exists)
{
using (stream = new FileStream(path, FileMode.Open))
{
response.ContentType = mimeType;
response.AddHeader("Content-Disposition", "attachment; filename=\"" + name + "\"");
response.AddHeader("Content-Length", fileInfo.Length.ToString());
int length;
do
{
if (response.IsClientConnected)
{
length = stream.Read(buffer, 0, bytesToRead);
response.OutputStream.Write(buffer, 0, length);
response.Flush();
buffer = new Byte[bytesToRead];
}
else
{
length = -1;
}
} while (length > 0);
stream.Close();
response.End();
}
}
}
答案 0 :(得分:0)
我们最终使用了HttpResponse.TransmitFile。它直接写入响应输出流,而不会缓冲到内存中。然后我们使用世界各地的代理商对其进行了测试。
答案 1 :(得分:-1)
为了设置测试环境,有一些模拟WAN连接的工具。
How do I simulate a low bandwidth, high latency environment?