PageMethods and Session - PullRequest
       29

PageMethods and Session

3 голосов
/ 24 февраля 2011

Я искал все выше и ниже для этого решения.Любые идеи будут высоко оценены.

Ситуация: при наличии нескольких вызовов PageMethod на одной странице каждый вызов метода удерживает блокировку объекта Session, таким образом блокируя.Вызовы PageMethod могут быть сделаны асинхронными, только если директива @Page установлена ​​в False|ReadOnly

Выводы: когда директива Page является значением по умолчанию (чтение / запись), но сеанс нигде не используется на странице, звонки не блокируются.Любое чтение или запись в сеансе на уровне страницы блокирует вызовы метода страницы.

Проблема: указание EnableSessionState=ReadOnly в директиве @Page очень ограничительно и не хочет идти по этому пути.

Может ли вызов метода страницы не блокироваться?и все еще получить доступ к сессии?(можно не писать, а просто читать)

Ответы [ 2 ]

2 голосов
/ 06 марта 2011

Я не верю, что вы можете сделать это без реализации собственного поставщика сеансов. На этой странице MSDN есть информация .

ASP.NET-приложения по своей сути многопоточный. Потому что просит поступить параллельно обрабатываются на параллельные потоки, извлеченные из потока бассейн, возможно, что два или более запросы, ориентированные на один и тот же сеанс будет выполняться в то же время. (The классический пример, когда страница содержит два кадра, каждый из которых нацелен на разные ASPX в том же приложение, в результате чего браузер отправить перекрывающиеся запросы для две страницы.) Чтобы избежать столкновения данных и неустойчивое поведение, поставщик «блокирует» сеанс, когда он начинается обработка первого запроса, в результате чего другие запросы, ориентированные на то же сеанс в ожидании блокировки бесплатно.

Потому что нельзя допускать вреда одновременные запросы на выполнение перекрывающиеся чтения, блокировка обычно реализуется как блокировка чтения / записи, то есть позволяет любому количеству потоков читать сеанс, но это предотвращает перекрытие читает и пишет, а также пересекающиеся записи.

0 голосов
/ 07 марта 2011

Ответ подробно описан в Сеансы в асинхронном дизайне

...