2010-08-19 3 views
2

У меня есть приложение ASP.NET с 5 .ashx HTTPHandlers, которые реализуют IRequiresSessionState или IReadOnlySessionState.Сохранять переменные сеанса через HttpHandlers

После вызова первого обработчика я создаю переменную и сохраняю ее в сеансе.

Когда я вызываю следующий HttpHandler, переменная недоступна в объекте сеанса.

Я использую context.Session.

У меня есть global.asax, где я получаю sessionId.

Есть ли способ сохранить переменные сеанса в HttpHandlers или каждый обработчик получит свою собственную сессию?

ответ

3

HeartAttack имеет хорошее обсуждение этого здесь:

http://weblogs.asp.net/ashicmahtab/archive/2008/09/18/how-to-use-session-values-in-an-httphandler.aspx

В принципе, вам нужно сделать что-то вроде:

public class MyHandler:IHttpHandler,IRequiresSessionState 

НТН годов.

Это должно поддерживать состояние сеанса через обработчики. То есть, когда вы входите в систему, у вас есть только один сеанс для всех ваших запросов в этом домене. Я бы посоветовал проверить, что вы действительно вошли в систему. Кэш, конечно, будет работать, потому что это является общим для всех сеансов, но гораздо более дорогостоящим на сервере, потому что это нелегко уйти.

+1

Я уже наследую IRequiresSessionState. Я хочу сохранить значения Session в HTTPHandlers, потому что каждый запрос HTTPHandler получает новый сеанс. В основном я решил использовать кэш приложений. – User48765902

Смежные вопросы