Asp. Net MVC 4 Приложение - отправка запроса в пределах очищенного iframe SQL Сеанс сервера - PullRequest
0 голосов
/ 08 января 2020

У меня есть приложение 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

1 Ответ

1 голос
/ 10 января 2020

Наконец-то я нашел ответ на этом форуме. Добавление 'cookieSameSite = "None" "к моему тегу sessionState решает проблему.

...