Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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后台处理阻止状态或UI反馈_C#_Asp.net Mvc_Iis 6_Asp.net 3.5_Long Running Processes - Fatal编程技术网

C# ASP.NET后台处理阻止状态或UI反馈

C# ASP.NET后台处理阻止状态或UI反馈,c#,asp.net-mvc,iis-6,asp.net-3.5,long-running-processes,C#,Asp.net Mvc,Iis 6,Asp.net 3.5,Long Running Processes,我知道这个问题已经被问过很多次了,但我的问题有点不同 我有一个页面,让用户下载和上传excel文件。下载excel时,生成文件大约需要2分钟。我添加了一些检查点,这些检查点会更新数据库的状态,比如(已开始处理,正在处理标头…等等)。我已经做了同样的事情上传 我还有一个ajax请求,它以固定的时间间隔检查数据库,并将状态打印给用户,以提供反馈,如(开始处理、处理标题等) 问题是,我只有在流程完成后才能得到反馈。看起来会话在后台进程中被阻塞,任何其他请求(ajax)只有在后台进程结束后才能完成。aj

我知道这个问题已经被问过很多次了,但我的问题有点不同

我有一个页面,让用户下载和上传excel文件。下载excel时,生成文件大约需要2分钟。我添加了一些检查点,这些检查点会更新数据库的状态,比如(已开始处理,正在处理标头…等等)。我已经做了同样的事情上传

我还有一个ajax请求,它以固定的时间间隔检查数据库,并将状态打印给用户,以提供反馈,如(开始处理、处理标题等)

问题是,我只有在流程完成后才能得到反馈。看起来会话在后台进程中被阻塞,任何其他请求(ajax)只有在后台进程结束后才能完成。ajax在4秒内发出大约10个请求。我只在最后得到10个响应

我试过两个iFrame,还有两个Frame,一个运行ajax,另一个运行流程,都不起作用。我尝试了单独的浏览器(进程在IE中运行,ajax在FF中运行),这是可行的(所以我现在的代码可以工作了)。有人能提供建议吗?谢谢


p、 我的环境是IIS 6,ASP.NET 3.5和MVC 1.0浏览器是IE6.0

您的浏览器对可以同时工作的连接数有限制

我相信IE有2个连接的限制。这意味着,即使运行AJAX请求,也只能同时运行两个请求

这很可能就是为什么直到最后才看到结果,因为它正在处理其他连接,并且在完成之前不会到达状态请求。这也解释了为什么当你在不同的浏览器上使用它时,它会起作用,因为你不会受到相同的连接限制


下面是一个详细说明问题的示例。

您的浏览器对可以同时工作的连接数有限制

我相信IE有2个连接的限制。这意味着,即使运行AJAX请求,也只能同时运行两个请求

这很可能就是为什么直到最后才看到结果,因为它正在处理其他连接,并且在完成之前不会到达状态请求。这也解释了为什么当你在不同的浏览器上使用它时,它会起作用,因为你不会受到相同的连接限制


这里有一个详细的问题说明。

这正是我想要的


使用IAsyncResult的delegate BeginInvoke有助于阻止会话

这正是我想要的


使用IAsyncResult的delegate BeginInvoke有助于阻止会话

谢谢你的回复,但我也尝试了Firefox,它有15个连接,甚至都不起作用。@spiderdevil浏览器不是唯一对此设置限制的浏览器。它实际上内置于HTTP 1.0和1.1规范中,因此服务器也可能遵守HTTP规范及其限制,我认为这是4个同时连接。我与fiddler进行了检查。我只看到两个连接,我的进程和ajax请求每隔两秒添加到队列中。一旦我的过程结束,ajax响应就会回来。我该如何解决这个问题。谢谢你的回复,但我也尝试了Firefox,它有15个连接,甚至都不起作用。@spiderdevil浏览器不是唯一对此设置限制的浏览器。它实际上内置于HTTP 1.0和1.1规范中,因此服务器也可能遵守HTTP规范及其限制,我认为这是4个同时连接。我与fiddler进行了检查。我只看到两个连接,我的进程和ajax请求每隔两秒添加到队列中。一旦我的过程结束,ajax响应就会回来。我该如何解决这个问题。