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

Общие обработчики и сеансы ASP.NET

У меня проблема с GenericHandler и anonymousIdentification.

В принципе, если <anonymousIdentification enabled="true" /> включен в веб-конфиге, всякий раз, когда на сервер отправляется запрос JQuery GET/POST, этот запрос выполняется под новым пользователем и новым сеансом пользователя.

Есть ли способ смягчить это? Мне нужно получить доступ к текущим переменным сеанса пользователя... Это действительно расстраивает!

4b9b3361

Ответ 1

Общие обработчики должны реализовать интерфейс IReadOnlySessionState для доступа к переменным сеанса. Если вам также необходимо написать переменные сеанса, выполните IRequiresSessionState.

Ответ 2

Внедрить интерфейс System.Web.SessionState.IRequiresSessionState:

public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{   
  public void ProcessRequest(HttpContext context)  
  {      
    context.Session["StackOverflow"] = "overflowing";      
    context.Response.Redirect("~/AnotherPage.aspx");      
  }

}

Ответ 3

Вы можете использовать это:

public class Handler : 
    IHttpHandler, 
    System.Web.SessionState.IReadOnlySessionState

Ответ 4

Я предлагаю в веб-браузере включить вкладку сети в режиме разработчика. Затем проверьте в AJAX, какой файл cookie отправлен (если есть).

Если вы не видите никакого файла cookie, это означает, что браузер не получил сеанс, поэтому вы должны убедиться (как указано Джошем) наследовать правый интерфейс и получить доступ к файлу cookie. (Не забывайте использовать System.Web.SessionState)

Чтобы сгенерировать файл cookie, откройте SessionID sessionID:

string sesId = context.Session.SessionID;

До вы пишете что-либо в ответ.