|
|
|
Особенности провайдера сессии на SessionStateStoreProviderBase
|
|||
|---|---|---|---|
|
#18+
Привет! Сейчас разбираюсь с классом - провайдером сессии, унаследованным от SessionStateStoreProviderBase. Вначале запроса в этом классе через метод GetItemExclusive из хранилища забирается коллекция сессии и заданный ключ блокируется. В конце запроса в методе SetAndReleaseItemExclusive ключ разблокируется и коллекция перезаписывается в хранилище. При нормальной работе, если в приложении возникает другой параллельный запрос с этим же ключом сессии, например, с другой страницы браузера (а первый запрос еще выполняется), то забранная первым запросом коллекция сессии становится доступной и другим параллельным запросам. У меня же получилось, что при параллельных запросах всегда выполняется метод GetItemExclusive - обращение к хранилищу. Если ключ в хранилище блокировать, то выдается ошибка, что ключ заблокирован. Если не блокировать, то выдается старая коллекция сессии, которая уже взята 1-м запросом и может быть там модифицирована. Не могу разобраться, на каком этапе происходит переключение, обращаться ли к хранилищу сессии или в данный момент коллекция сессии уже взята из хранилища и нужно использовать эту коллекцию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 11:40 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=125&tid=1359400]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 285ms |
| total: | 437ms |

| 0 / 0 |
