0

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

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

这是:

  • 浏览器问题?如果所有现代浏览器都支持每个域至少 2 个并发请求,为什么这不起作用?
  • 框架限制?
  • 一个理想的设计模式,甚至可能?我已经检查过了,在重定向到 HTML 页面后,原始请求继续处理(数据库更新,没问题)。

从“并发 HTTP 请求”的角度来看,Page 方法调用是否根本不是异步的?

任何见解都非常感谢!

4

1 回答 1

0

听起来您正在阻止 InProc Session,它仅限于每个唯一会话一个并发请求。如果您不需要访问页面方法中的 Session,您可以通过修改 WebMethod 属性来禁用它:

[System.Web.Services.WebMethod(EnableSession=false)]
于 2011-01-22T06:36:13.500 回答