Как установить время ожидания блокировки чтения-записи ASP.NET SessionState? - PullRequest
4 голосов
/ 05 февраля 2010

У меня есть веб-служба WCF, которая использует состояние сеанса ASP.NET. WCF устанавливает блокировку чтения-записи в сеансе для каждого запроса. Это означает, что мой веб-сервис может обрабатывать только один запрос на пользователя, что ухудшает воспринимаемую производительность нашего приложения AJAX.

Так что я пытаюсь найти способ обойти это ограничение.

  • Использование блокировки только для чтения (которая затем обеспечивает одновременный доступ к сеансу) не поддерживается WCF.
  • Я не нашел способа снять блокировку чтения-записи вручную во время обработки запроса
  • Так что теперь я думаю, что может быть какой-то способ установить тайм-аут блокировки чтения-записи на очень короткий интервал, чтобы ожидающие запросы не должны были ждать очень долго. См. Ниже часть, выделенную жирным шрифтом.

из MSDN: http://msdn.microsoft.com/en-us/library/ms178581.aspx

"Если два одновременных запроса сделаны для одного и того же сеанса, первый запрос получает эксклюзивный доступ к информации о сеансе. Второй запрос выполняется только после того, как первый запрос завершен. (Второй сеанс также может получить доступ, если исключительная блокировка информации освобождается, потому что первый запрос превышает время ожидания блокировки.) Если значение EnableSessionState в директиве @ Page установлено в ReadOnly, запрос информации о сеансе только для чтения не приводит к эксклюзивная блокировка данных сеанса. "

... Но я не нашел никакой информации о том, как долго этот тайм-аут блокировки, или как его изменить.

Ответы [ 2 ]

1 голос
/ 20 ноября 2013

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

По умолчанию это значение равно 110 секундам после 2.0 asp, до этого оно90 секундЯ был бы обеспокоен тем, что это поведение изменится в будущем и будет «исправлено».

0 голосов
/ 08 ноября 2010

Кто-нибудь пробовал использовать SQLSessionStateProvider и модифицировать SP? Я сделал это в Dev и, кажется, обойти проблемы с блокировкой, но не уверен, есть ли какие-либо побочные эффекты. По сути, я изменил 3 SP, которые получают эксклюзивные блокировки, чтобы столбец Lock всегда был равен 0.

...