让我们想象一下网站上有 2 个页面:快速页面和慢速页面。对慢速页面的请求执行 1 分钟,对快速页面的请求执行 5 秒。
在我的整个开发生涯中,我认为如果第一个启动的请求很慢:他将对数据库进行(同步)调用...等待答案...如果在此期间完成对快速页面的请求,则该请求将在同时处理系统正在等待 DB 的响应。
但今天我发现:http://msdn.microsoft.com/en-us/library/system.web.httpapplication.aspx
HttpApplication 类的一个实例在其生命周期内用于处理许多请求。但是,它一次只能处理一个请求。因此,成员变量可用于存储每个请求的数据。
难道说我原来的想法是错误的吗?
您能澄清一下它们的意思吗?我很确定事情正如我所期望的那样......
由于 asp.net 会话锁定,如果两个请求使用具有读/写访问权限的相同会话状态,则必须在服务器端按顺序处理请求。
您可以在这里找到更多信息:http://msdn.microsoft.com/en-us/library/ie/ms178581.aspx
并发请求和会话状态
对 ASP.NET 会话状态的访问是每个会话独占的,这意味着如果两个不同的用户并发请求,则同时授予对每个单独会话的访问权限。但是,如果对同一会话发出两个并发请求(通过使用相同的 SessionID 值),则第一个请求将独占访问会话信息。第二个请求仅在第一个请求完成后执行。 (如果由于第一个请求超过锁定超时而释放了信息上的独占锁,则第二个会话也可以获得访问权限。)如果@ Page 指令中的 EnableSessionState 值设置为 ReadOnly,则只读请求会话信息不会导致会话数据上的独占锁定。但是,对会话数据的只读请求可能仍需要等待对会话数据的读写请求设置的锁被清除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)