Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET中通过HTTP快速传输JSON数据&;IIS 8.0_C#_Asp.net_Json_Iis - Fatal编程技术网

C# ASP.NET中通过HTTP快速传输JSON数据&;IIS 8.0

C# ASP.NET中通过HTTP快速传输JSON数据&;IIS 8.0,c#,asp.net,json,iis,C#,Asp.net,Json,Iis,我有一个MVC操作,它通过HTTP将JSON数据流传输到客户端,数据可以多达400000到600000条记录 当涉及到数据流时,我面临一个性能问题。 例如,对于10000条记录,我设法将映射时间减少到1.3秒,将JSON生成时间减少到1.5秒 然而,当我将数据流式传输到客户端时,我面临一个问题,将数据流式传输到客户端大约需要7秒钟。 我正在使用IIS 8,在操作本身上,我已关闭会话 通过对40000条记录进行测试,查询和生成JSON大约需要8秒,但流式传输数据需要25秒 我的代码(我的自定义Ac

我有一个MVC操作,它通过HTTP将JSON数据流传输到客户端,数据可以多达400000到600000条记录

当涉及到数据流时,我面临一个性能问题。 例如,对于10000条记录,我设法将映射时间减少到1.3秒,将JSON生成时间减少到1.5秒

然而,当我将数据流式传输到客户端时,我面临一个问题,将数据流式传输到客户端大约需要7秒钟。 我正在使用IIS 8,在操作本身上,我已关闭会话

通过对40000条记录进行测试,查询和生成JSON大约需要8秒,但流式传输数据需要25秒

我的代码(我的自定义ActionResult)如下所示:

response.Clear();
response.ContentType = "application/json";
response.AddHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
response.AddHeader("Pragma", "no-cache");

response.Write("[ ");
int c=0;
foreach(var item in Data) {
  if (c>0) response.Write(", ");
  response.Write(ConvertToJson(item));
  c++;
  //here tried to flush in intervals too - only managed to save like 2 seconds
}
response.Write(" ]");
response.End();
响应是HttpContext.response,在代码上面的几行中,我也设置了所有必要的头

有没有办法优化ASP.NET或IIS以更快地传输数据

更新

当我使用带宽更好的生产服务器时,传输时间似乎大大缩短了。另一个想法是让客户机请求分块的数据以获得更好的性能,但我可以控制这一点的唯一方法是引入API限制


仍然在寻找优化方案,考虑要考虑哪些项目才能更好的表现。

你肯定会受到网络延迟和路由的限制。除非响应是gzip处理的,否则您无法在那里执行很多操作,这需要一些额外的服务器活动。您能看到数据是否正在被压缩并返回到客户端吗?此外,请检查返回数据的全部带宽。请记住,如果您正在测试生产服务器,那么这不是它响应的唯一请求,因此只是共享部分带宽。