Сохранить переменные сеанса через HttpHandlers - PullRequest
2 голосов
/ 20 августа 2010

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

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

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

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

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

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

1 Ответ

3 голосов
/ 20 августа 2010

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

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

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

public class MyHandler:IHttpHandler,IRequiresSessionState

НТН годов.

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

...