我有一个菜单页面。如果用户选择菜单项,则使用JavaScript打开新的IE窗口。因此,用户可以在多个IE Windows中打开应用程序的不同部分。这些Windows具有相同的会话。 我的问题是这些页面是同步访问的吗?如果其中一个子窗口正在等待操作完成,则不处理来自任何其他子窗口的其他请求。是因为使用了Session变量吗?
更新:这只发生在具有相同父级的Windows上。如果我有来自不同父窗口的IE子窗口,那么这个问题就不存在了。
答案 0 :(得分:2)
是的,如果每个页面都在使用会话,那么asp.net将针对它序列化活动。如果这些子页面中的一个或多个仅需要只读访问权限,则在@Page指令中标记(例如EnableSessionState =“ReadOnly”),或者如果未使用会话信息则将其完全关闭。
通常,在服务器上挂起长时间运行的活动是一个糟糕的计划,正如您所发现的,如果他们正在使用会话,则尤其如此。
修改的 最后的常见问题解答here也描述了此序列化。
编辑2 回应评论:关闭子窗口:
一旦服务器端进程完成其正在处理的任何请求,它将最终处理其他请求。关闭子窗口不中止服务器端的请求。你可以希望最好的是,长期运行的请求有可能经常检查IsClientConnected,如果它不再相关则中止它的处理。
答案 1 :(得分:1)
从服务器的角度来看,您完全无法知道客户端打开了多少个浏览器窗口。
所以,不,他们不同步。