У меня есть веб-служба WCF, которая использует состояние сеанса ASP.NET. WCF устанавливает блокировку чтения-записи в сеансе для каждого запроса. Это означает, что мой веб-сервис может обрабатывать только один запрос на пользователя, что ухудшает воспринимаемую производительность нашего приложения AJAX.
Так что я пытаюсь найти способ обойти это ограничение.
- Использование блокировки только для чтения (которая затем обеспечивает одновременный доступ к сеансу) не поддерживается WCF.
- Я не нашел способа снять блокировку чтения-записи вручную во время обработки запроса
- Так что теперь я думаю, что может быть какой-то способ установить тайм-аут блокировки чтения-записи на очень короткий интервал, чтобы ожидающие запросы не должны были ждать очень долго. См. Ниже часть, выделенную жирным шрифтом.
из MSDN:
http://msdn.microsoft.com/en-us/library/ms178581.aspx
"Если два одновременных запроса сделаны для одного и того же сеанса, первый запрос получает эксклюзивный доступ к информации о сеансе. Второй запрос выполняется только после того, как первый запрос завершен. (Второй сеанс также может получить доступ, если исключительная блокировка информации освобождается, потому что первый запрос превышает время ожидания блокировки.) Если значение EnableSessionState в директиве @ Page установлено в ReadOnly, запрос информации о сеансе только для чтения не приводит к эксклюзивная блокировка данных сеанса. "
... Но я не нашел никакой информации о том, как долго этот тайм-аут блокировки, или как его изменить.