asp.net - 为什么我的 asp.net 页面会被同步访问?

标签 asp.net javascript session

我有一个菜单页面。如果用户选择一个菜单项,它会使用 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/

相关文章:

asp.net - VB.NET Directory.GetFiles 按日期排序

c# - iTextSharp `save as` 保存到用户定义的位置

javascript - Ajax.BeginForm 处理两个不同的 onSuccess 响应,MVC 5,C#

php - 无法获取 $_SESSION 变量

asp.net - 使用 Sharepoint Web 服务

javascript - 在 React JS 中使用 Axios 迭代数据

c# - 在模型上添加动态只读属性

PHP 查询数据库内的 Session_ID

跨端点的 Java websockets 共享 session

asp.net - 从 angular2 到 .NET Web api 的 HTTP Post 不起作用