Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ASP.NET сессия из дочернего потока
|
|||
|---|---|---|---|
|
#18+
Привет. Нет, не HttpContext.Current, а именно Session пропадает, когда я порождаю на сервере новый дочерний поток и передаю туда HttpContext.Current. Последний не NULL в дочернем потоке, Application and Cache также не нул, но сессия исчезает, как только главный поток выйдет за свой scope. Это происходит почти сразу и мой дочерний поток тут же выкидывает эксепшон. Как фикснуть? Как запустить долгоиграющую задачу на сервере, оставить ее там работать с сессией и тут же выйти (речь идет о вызовах WCF, котрые хостятся на IIS )? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 23:19 |
|
||
|
ASP.NET сессия из дочернего потока
|
|||
|---|---|---|---|
|
#18+
а как вы передаете покажите вот работает, я б рекомендовал отказаться от сессии в потоке. Код: c# 1. 2. 3. 4. 5. 6. 7. п.с. использование сессии в потоке да еще вне запроса сессии попахивает плохой архитектурой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 09:54 |
|
||
|
ASP.NET сессия из дочернего потока
|
|||
|---|---|---|---|
|
#18+
ASP.NET Session State Overview Concurrent Requests and Session StateAccess to ASP.NET session state is exclusive per session, which means that if two different users make concurrent requests, access to each separate session is granted concurrently. However, if two concurrent requests are made for the same session (by using the same SessionID value), the first request gets exclusive access to the session information. Смотрите, как бы Ваша "долгоиграющая задача" не привела к тормозам на ровном месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 10:36 |
|
||
|
ASP.NET сессия из дочернего потока
|
|||
|---|---|---|---|
|
#18+
>а как вы передаете покажите Да, приблизительно так и передаю. Только капчей является не сессия, а HttpContext.Current. Кроме сессии мне требуется еще и Cache, с которым, кстати, проблем нет. Все немного развеcистей - поток может породить еще массу потоков, но в них также передается HttpContext.Current тем же макаром, как closure внешней переменной. Там, во "вторичных" потоках проблема и возникает. Отказывался от капчи, передавал HttpContext.Current в поток как параметр - тот же эффект. Ставил для потока IsBackground=false, но это, оказывается, по умолчанию и опять толку нуль. >п.с. использование сессии в потоке да еще вне запроса сессии попахивает плохой архитектурой Как бы ни попахивало, задачу нужно решить. Клиент, используя two-way байндинг, стартует на сервере long-runing процесс, передав туда ASP.NET сессию и тут же покидает сервер. Раз запрос two-way, этот запрос возвращает назад некий флаг, что, мол, все удачно стартовано. Можно наплевать на флаг и использовать one-way байндинг. Но тут еще хуже - сессия становится недоступна сразу же, а не во "вторичных" потоках. >Смотрите, как бы Ваша "долгоиграющая задача" не привела к тормозам на ровном месте. Эта задача типичнейшая для WCF c многопоточным порождением. Один и тот же клиент (в моем случае Silverlight 5) может запустить с десяток запросов к одному и тому же сервису одновременно. И если сервис имеет multiple concurrency (никто не запрещает), то всего лишь нужно позаботиться, чтоб и сам код был потоко-безопасный. Но это уже другая история. Так как же решить задачу с long-runing процессом и доступом к сессии? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 16:48 |
|
||
|
ASP.NET сессия из дочернего потока
|
|||
|---|---|---|---|
|
#18+
mabanza, может поможет хранить сессию в бд и делать промежуточный псевдо SSO ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 21:13 |
|
||
|
ASP.NET сессия из дочернего потока
|
|||
|---|---|---|---|
|
#18+
mabanza, <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> а если так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 21:19 |
|
||
|
ASP.NET сессия из дочернего потока
|
|||
|---|---|---|---|
|
#18+
zabralex85, Т.е. альтернативный сторидж. Да можно. А можно ее же шельму в аппликейшн впихнуть. Сделать там словарь с уникальным ключом и шарить. Апликейшон с кешем - то доступны. Но плохо. Баги потом замучают, если сессии начнут путаться. Сессия - вешь деликатная, не дай бог юзер получит не свои данные. Пока отложил проблему. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 23:12 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38782490&tid=1356918]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 425ms |

| 0 / 0 |
