|
Контекст выполнения
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста, как решается такая задача. Есть 3-х уровневое ASP.NET приложение, windows-авторизация не используется. После логина я запоминаю ID пользователя в сесии. Далее где-то я выполняю вызов метода какого-то объекта и хочу в этом методе получить этот ID. Но у меня нет св-ва Session (т.е. это обычный класс, не наследуемый от всяких там System.Web.UI.Page) Так вот вопрос - как вообще можно передавать какой-то контекст выполнения? Я делаю ЭТО через потоки: На событие Application_BeginRequest делаю: Thread.SetData(Thread.GetNamedDataSlot("PersonalizedContext"), <ID пользователя>); И далее при вызове в этом методе получаю этот ID: <ID пользователя> = Thread.GetData(Thread.GetNamedDataSlot("PersonalizedContext")); Но я подозреваю, что: 1. В процессе обработки страницы текущий поток может изменится. 2. Есть какие-то более общепринятые подходы к передаче контекста или передачи текущего пользователя. Помогите, пожалуйста, наверняка кто-то решал все эти проблемы, что вообще мне делать??? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2003, 18:43 |
|
Контекст выполнения
|
|||
---|---|---|---|
#18+
Работает System.Web.HttpContext.Current.Session("SomeKey"). Не будет это работать в конструкторе самой страницы или ее базового класса, а если объект инстанцируется после, должно, и в конструкторе этого объекта тоже будет работать. Еще помогает имплементация интерфейса IRequiresSessionState если это хандлер или модуль. Он ничего не просит, но без него работать не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2003, 20:23 |
|
Контекст выполнения
|
|||
---|---|---|---|
#18+
2greenapple Спасибо за ответ. Вот в gotdotnet-е тоже подсказали такое решение. Вот дискуссия по этому поводу: http://www.gotdotnet.ru/default.aspx?tmpl=board_thread&m_no=18615&d_no=44 В принципе решение простое и удобное. Меня только мучают сомнения по поводу производительности... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2003, 14:35 |
|
Контекст выполнения
|
|||
---|---|---|---|
#18+
Думаю, что такие операции естественны как вдох и выдох даже для очень большого ASP.NET проекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2003, 15:54 |
|
Контекст выполнения
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста, как решается такая задача. это обычный класс, не наследуемый от всяких там System.Web.UI.Page Так вот вопрос - как вообще можно передавать какой-то контекст выполнения? Могу предложить еще один вариант: в конструктор того самого обычного класса передаешь переменную типа System.Web.UI.Page, либо HttpSessionState. Т.е. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
В следующем я не уверен, если не прав - народ поправит: При желании эти переменные можно передавать не по значению а по ссылке (ref), быстрее будет и памяти меньше сожрет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2003, 03:27 |
|
|
start [/forum/topic.php?fid=18&msg=32201359&tid=1396380]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 282ms |
total: | 431ms |
0 / 0 |