У меня есть это поле в моей сессии класс:странная сессия проблема
public bool IsCartRecentlyUpdated
{
get
{
if (this.session["IsCartRecentlyUpdated"] != null)
{
return (bool)this.session["IsCartRecentlyUpdated"];
}
else
{
this.session["IsCartRecentlyUpdated"] = false;
return (bool)this.session["IsCartRecentlyUpdated"];
}
}
set
{
this.session["IsCartRecentlyUpdated"] = value;
}
}
Всякий раз, когда пользователь добавляет товар в корзину я кладу это значение по истине:
public void AddToCart(Product product, int quantity)
{
IsCartRecentlyUpdated = true;
//other code for updating the cart
}
Добавление продукта к cart делает обратную передачу, так что я могу показать сообщение (g: Продукт добавлен успешно) в Page_Load от главной страницы мастера, где находится корзина для покупок, когда продукт только что добавлен в корзину:
protected void Page_Load(object sender, EventArgs e)
{
if (this.sessionsUtil.IsCartRecentlyUpdated)
{
this.lblCartWarning.Text = (string)GetLocalResourceObject("CartWarning");
imgCardLogos.Visible = false;
}
else
{
this.lblCartWarning.Text = String.Empty;
imgCardLogos.Visible = true;
}
//other code
//put it back to false to not show the message each time the page is loaded
this.sessionsUtil.IsCartRecentlyUpdated = false;
}
Ну этот код работает большой локально но на сервере не показывать сообщение после добавления продукта в корзину, но на второй странице загрузки ... (Я полагаю, что на сервере как-то загружается страница перед обновлением сессии var - крайне странно)
Знаете ли вы, почему? Я не вижу никакой проблемы в коде ...
Вы используете InProc сессии и вы главный сайт, размещенный на нескольких серверах, сидя за балансировщик нагрузки? – Chandu
Что происходит, когда вы добавляете продукт? Кто устанавливает значение сеанса, кто делает обратную передачу, какой порядок? – fejesjoco
Может быть, сервер (ы) находятся в веб-ферме, а ваша среда для разработчиков это не веб-ферма? – ScottS