Я пытаюсь установить переменную сеанса в файле ASHX. Я немного прочитал об этом и дошел до этого:
- Я установил переменную в файле ASPX, который вызывает обработчик ASHX.
- Я попытался сбросить переменную в обработчике.
Я получаю сообщение об ошибке, что «System.Web.HttpContext.Current.Session» имеет значение null. Как я уже сказал, я кое-что прочитал, и кажется, что это должно сработать, но по какой-то причине я просто не могу заставить его работать для меня.
Я добавил using System.Web.SessionState; в верхней части моего обработчика, но это, похоже, не помогло. Переменная сеанса (HttpContext.Current.Session ["saml_session_id"]) устанавливается с этим, но, похоже, не сохраняется. Когда я перехожу к aspx-файлу и вызываю HttpContext.Current.Session ["saml_session_id"] из моего непосредственного окна, возвращается только NULL.
Я использовал это в качестве руководства (Как получить доступ к сеансу в файле .ashx?), но явно чего-то не хватает.
Кто-нибудь может мне посоветовать? Я продолжу исследование, и если я решу эту проблему, опубликую решение.
Смотрите мой код ниже.
В моем файле .aspx я объявляю свою переменную сеанса:
HttpContext.Current.Session["saml_session_id"] = string.Empty;
Затем в том же файле я отправляю в файл ashx:
var response = Post("http://" + Request.ServerVariables["HTTP_HOST"].ToString() + "/API/Login.ashx", new NameValueCollection() {
{"Username",Username},
{"Password",Password}
});
Затем в моем файле ashx у меня есть следующее (это урезанная версия):
using System.Web.SessionState;
//Some validation happens and a string called session_id gets generated.
context.Session["saml_session_id"] = session_id;
//while I'm in the ashx file, context.Session["saml_session_id"] persists.
Когда запрос в обработчике завершит обработку, следующий код в файле ASPX будет следующим:
if (Response.Status.ToString() == "200 OK") {
Context.Response.Redirect("../Play.aspx?SessionId=" + HttpContext.Current.Session["saml_session_id"].ToString());
}
Но HttpContext.Current.Session ["saml_session_id"]. ToString () теперь снова пуст. По сути, похоже, что обработчик и веб-форма не обмениваются данными или сеанс не используется совместно. Я проверил, совпадает ли пространство имен. Что еще я должен проверить?