Asp.net 调用PageMethod块直到完成;防止客户端或服务器端重定向

Asp.net 调用PageMethod块直到完成;防止客户端或服务器端重定向,asp.net,asynchronous,pagemethods,Asp.net,Asynchronous,Pagemethods,我通过javascript调用一个静态页面方法,需要5到10分钟。我想让我的用户选择是否继续等待请求完成,并使用window.setTimeout每隔30秒检查一次 我尝试过location.href='/newpage.aspx'或启动按钮的单击处理程序,在完成page方法之前执行类似的重定向以重定向用户,但都没有成功。我可以立即将用户发送到一个简单的html页面,但重定向到任何涉及服务器端的aspx页面似乎会被阻止。当page方法最终完成时,重定向确实成功 这是: 浏览器问题?如果都是现代的

我通过javascript调用一个静态页面方法,需要5到10分钟。我想让我的用户选择是否继续等待请求完成,并使用window.setTimeout每隔30秒检查一次

我尝试过location.href='/newpage.aspx'或启动按钮的单击处理程序,在完成page方法之前执行类似的重定向以重定向用户,但都没有成功。我可以立即将用户发送到一个简单的html页面,但重定向到任何涉及服务器端的aspx页面似乎会被阻止。当page方法最终完成时,重定向确实成功

这是:

浏览器问题?如果都是现代的话 浏览器至少支持2个 每个域的并发请求,为什么 这不管用吗? 框架 限制 理想的设计 模式还是可能?我已经 选中,并在重定向到 HTML页面,原始请求继续处理db更新,没有问题。 从并发HTTP请求的角度来看,页面方法调用是否不是异步的


非常感谢您的任何见解

听起来像是在阻止InProc会话,每个唯一会话只能有一个并发请求。如果不需要在page方法中访问会话,可以通过修改WebMethod属性来禁用它:

[System.Web.Services.WebMethod(EnableSession=false)]

是什么让你相信它们是异步的?页面方法当然是异步的。出于所有目的,它们与ASMX ScriptService WebMethods完全相同,但EnableSession在默认情况下设置为true而不是false。@John:我认为它们是异步的,因为控件会立即返回给调用page方法的客户端js,但您可能有什么发现。如果我在服务器端代码的标准回发过程中调用page方法,该方法肯定不会像所写的那样异步。@Dave:标准ScriptService WebMethods是同步的。@John:关于他所问的关于并发HTTP请求的问题,ScriptServices和page方法没有阻止并发请求的固有特性。下面是一个向ASMX脚本服务发出请求的示例,该服务包含50毫秒的延迟,是Firefox允许的100倍。如果服务器端有同步阻塞,则至少需要5000ms,但通常在750ms左右完成。浏览器的每域连接限制是所有阻碍它的因素。谢谢Dave。。。我试过了,但没用。重定向仍然阻止等待PageMethod调用完成。另外,刚刚检查并意识到我们正在使用进程外会话sql会话。