Это проект ASP.NET MVC.Я пытаюсь получить значение из сеанса, и он всегда возвращает ноль.
Методы SaveToSession
& GetFromSession
находятся в отдельном вспомогательном классе.При нажатии кнопки отправки выполняется вызов метода контроллера и, в свою очередь, вспомогательного метода для сохранения данных в сеансе.
Другой щелчок тега привязки (который имеет путь к контроллеру) попадет в тот же контроллеркоторый вызывает вспомогательный метод для извлечения данных из сеанса.Здесь данные всегда равны нулю.
Это методы из моего вспомогательного класса
public static void SaveDataInSession(string sessionName, IEnumerable<Item> lstData)
{
System.Web.HttpContext.Current.Session[sessionName] = lstData;
}
public static void GetDataFromSession(string sessionName, out IEnumerable<Item> lstData)
{
lstData = null;
var test = System.Web.HttpContext.Current.Session; //This session has a new SessionID and hence does not have the data.
if (System.Web.HttpContext.Current.Session[sessionName] != null)
{
// it never comes into this block
}
}
Во время отладки я вижу, что данные сохраняются в сеансе, как я вижуимя сеанса в списке ключей.
Тот же код отлично работал в другом проекте ASP.NET MVC.Я проверил файл web.config
этого проекта, если были какие-либо записи, связанные с сеансом, и их не было.
ОБНОВЛЕНИЕ : я заметил, что при сохранении данных сгенерированный идентификатор сеансаотличается и при получении данных, у него есть другой идентификатор.Я думаю, что это может быть причиной, но почему это создает новые идентификаторы сессии, когда я даже не обновляю страницу.Что можно сделать, чтобы это исправить.
Версия System.Web.Mvc
- 5.2.3.0