Ответ 1
Общие обработчики должны реализовать интерфейс IReadOnlySessionState
для доступа к переменным сеанса. Если вам также необходимо написать переменные сеанса, выполните IRequiresSessionState
.
У меня проблема с GenericHandler и anonymousIdentification.
В принципе, если <anonymousIdentification enabled="true" />
включен в веб-конфиге, всякий раз, когда на сервер отправляется запрос JQuery GET/POST, этот запрос выполняется под новым пользователем и новым сеансом пользователя.
Есть ли способ смягчить это? Мне нужно получить доступ к текущим переменным сеанса пользователя... Это действительно расстраивает!
Общие обработчики должны реализовать интерфейс IReadOnlySessionState
для доступа к переменным сеанса. Если вам также необходимо написать переменные сеанса, выполните IRequiresSessionState
.
Внедрить интерфейс 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");
}
}
Вы можете использовать это:
public class Handler :
IHttpHandler,
System.Web.SessionState.IReadOnlySessionState
Я предлагаю в веб-браузере включить вкладку сети в режиме разработчика. Затем проверьте в AJAX, какой файл cookie отправлен (если есть).
Если вы не видите никакого файла cookie, это означает, что браузер не получил сеанс, поэтому вы должны убедиться (как указано Джошем) наследовать правый интерфейс и получить доступ к файлу cookie. (Не забывайте использовать System.Web.SessionState)
Чтобы сгенерировать файл cookie, откройте SessionID sessionID:
string sesId = context.Session.SessionID;
До вы пишете что-либо в ответ.