У меня есть приложение Asp. Net MVC 4, использующее пользовательскую оболочку сеанса. Сеанс сохраняется в SQL сервер (SQL Режим сервера - истек через 20 минут). Обычные клиенты открывают приложение внутри iframe, обрабатывают их заказ и закрывают iframe после завершения. До недавнего времени все работало нормально, когда IT установил последние обновления Microsoft. Все ajax запрашивают приложение, созданное в то время как внутри iframe возвращает сообщение об ошибке 500. После некоторой отладки я понял, что объект сеанса нулевой. В результате приложение выдало нулевое исключение. Если бы я использовал приложение за пределами iframe, оно работало бы как ожидалось. Я не смог найти работу вокруг. Без обходного пути мне придется начать добавлять скрытые метки, чтобы некоторые из этих значений были доступны мне во время запросов. У кого-нибудь есть обходной путь для этой проблемы?
класс сессионной оболочки
[Serializable]
[SessionExpireFilter]
public class SessionWrapper
{
public static CurrentOrder currentOrder
{
get
{
if (HttpContext.Current.Session["Order"] != null)
{
return (CurrentOrder)HttpContext.Current.Session["Order"];
}
else
{
return null;
}
}
set
{
HttpContext.Current.Session["Order"] = value;
}
}
}
инициализирует оболочку, когда пользователь запускает заказ
CurrentOrder currentOrder= new CurrentOrder();
SessionWrapper.CurrentOrder = currentOrder;
Чтение или установка переменной сеанса.
SessionWrapper.CurrentOrder.OrderId = anOrderID
if(SessionWrapper.CurrentOrder != null && SessionWrapper.CurrentOrder.OrderId > 0)
anOrderId = SessionWrapper.CurrentOrder.OrderId
Обновлено 01.09 2020
Через некоторое время дополнительная отладка, запрос не включает информацию о сеансе. В результате часть кода, когда сессия не является нулевой, никогда не выполняется, потому что сессия является нулевой.
HttpContext.Current.Session["Order"] != null