Подтвердить что ты не робот

Как использовать состояние сеанса ASP.NET в HttpHandler?

У меня есть HttpHandler, который запускается на клиентской странице (кросс-домен, а не на нашем сервере IIS и т.д.), и когда они нажимают на нашу встроенную ссылку, она запускает Handler на нашем сервере. Пока все работает нормально.

Теперь я пытаюсь использовать объект System.Web.HttpContext.Session, но он равен нулю. Я думаю, что это null, потому что у нас нет сеанса, пока не будет вызван наш HttpHandler? И несколько вызовов обработчику создадут новый сеанс для каждого звонка? Если это так, MS просто отключил объект Session при вызове в HttpHandler? Кто-нибудь может это подтвердить?

Если это так, что вы делаете для поддержания состояния между вызовами? Какой-то объект данных на основе SQL? Файл?

ТИА

4b9b3361

Ответ 1

Попросите HttpHandler реализовать интерфейс IRequiresSessionState. Это позволит использовать состояние сеанса. IRequiresSessionState можно найти в пространстве имен System.Web.SessionState.

Ответ 2

Я думаю, вам нужно реализовать пустой интерфейс IReadOnlySessionState, чтобы контекст загрузился.

изменить, чтобы добавить:

По словам Майкла Мортона, вы также можете внедрить IRequiresSessionState, который даст вам доступ к записи также к объекту Session

Ответ 3

using System; 
using System.Web;
using System.Web.SessionState;
public class DownloadHandler : IHttpHandler, IReadOnlySessionState
{
   public bool IsReusable { get { return true; } }

   public void ProcessRequest(HttpContext context)
   {
       context.Response.Write(context.Session["kmx"]);
   }
}

Ответ 4

попробуйте использовать текущий контекст...

System.Web.HttpContext.Current.Session