Веб-служба ASMX, заблокированная сеансами - PullRequest
0 голосов
/ 28 марта 2012

Как IIS обрабатывает несколько одновременных запросов к веб-службе, используя один и тот же идентификатор сеанса, когда этот веб-сервис использует сеансы?

Если первый вызов веб-службы не завершил обработку, IIS временно помещает в очередь второй вызов веб-службы, пока не завершится первый вызов веб-службы (поскольку они оба используют одни и те же данные сеанса).

Или IIS разрешает выполнение обоих запросов и любые изменения, внесенные в хранилище сеансов первым запросом, немедленно влияют на второй обрабатываемый вызов веб-службы, даже если это может привести к неожиданным результатам.

Я полагаю, что он использует первый вариант, ставя в очередь второй вызов до тех пор, пока первый не будет завершен из-за блокировок чтения / записи сеанса, но я не смог найти окончательный ответ.

Примечание. В этом случае запросы веб-службы генерируются из клиентского браузера асинхронно.

1 Ответ

1 голос
/ 28 марта 2012

Да, как и все, что использует состояние сеанса, модуль состояния сеанса будет блокировать запрос на дальнейшее продвижение по конвейеру (т.е. выполнение веб-метода ASMX) до тех пор, пока он не сможет установить блокировку для сеанса. Состояние сеанса - враг параллелизма, избегайте его любой ценой.

...