我有一个菜单页面。如果用户选择一个菜单项,它会使用 JavaScript 打开一个新的 IE 窗口。因此用户可以在多个 IE 窗口中打开应用程序的不同部分。这些窗口具有相同的 session 。 我的问题是这些页面是同步访问的吗?如果其中一个子窗口正在等待一个 Action 完成,则不会处理来自任何其他子窗口的其他请求。是因为使用了 session 变量吗?
更新:这只发生在具有相同父级的窗口上。如果我有来自不同父窗口的 IE 子窗口,那么这个问题就不存在了。
最佳答案
是的,如果每个页面都在使用 session ,那么 asp.net 将针对它序列化事件。如果这些子页面中的一个或多个只需要只读访问权限,则在您的@Page 指令中进行标记(例如 EnableSessionState="ReadOnly"),或者如果不使用 session 信息则将其完全关闭。
通常,在服务器上挂起长时间运行的事件是一个糟糕的计划,正如您所发现的,如果他们正在使用 session ,情况尤其如此。
编辑 最后常见问题 here还描述了这个序列化。
编辑 2 回应评论:关闭子窗口:
一旦服务器端进程完成了它正在处理的任何请求,它最终将处理其他请求。关闭子窗口不会中止服务器端的请求。您最好希望长时间运行的请求有机会检查 IsClientConnected每隔一段时间,如果它不再相关,则中止其处理。
关于asp.net - 为什么我的 asp.net 页面会被同步访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2372239/