2010-12-28 4 views
2

У меня есть это поле в моей сессии класс:странная сессия проблема

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 - крайне странно)

Знаете ли вы, почему? Я не вижу никакой проблемы в коде ...

+3

Вы используете InProc сессии и вы главный сайт, размещенный на нескольких серверах, сидя за балансировщик нагрузки? – Chandu

+0

Что происходит, когда вы добавляете продукт? Кто устанавливает значение сеанса, кто делает обратную передачу, какой порядок? – fejesjoco

+0

Может быть, сервер (ы) находятся в веб-ферме, а ваша среда для разработчиков это не веб-ферма? – ScottS

ответ

Смежные вопросы