当该Web服务依赖于会话时,IIS如何使用相同的会话ID处理对Web服务的多个同时请求?
如果第一个Web服务调用尚未完成处理,IIS是否会临时排队第二个Web服务调用,直到第一个Web服务调用结束(因为它们都依赖于相同的会话数据)。
或者IIS允许两个请求继续进行,第一个请求对会话存储所做的任何更改都会立即影响正在进行的第二个Web服务调用,即使可能会导致意外结果。
我相信它正在使用第一个选项,排队第二个调用,直到第一个调用由于会话读取器/编写器锁而完成,但我无法找到确定的答案。
注意:在这种情况下,Web服务请求是从客户端浏览器异步生成的。
答案 0 :(得分:1)
是的,与使用会话状态的任何其他内容一样,会话状态模块将阻止请求进入管道的任何进一步(即执行ASMX Web方法),直到它可以获取对会话的锁定。会话状态是并发的敌人,不惜一切代价避免它。