Пытаюсь настроить интернет-магазин. Рядом с каждым элементом у меня есть asp:imagebutton
, когда нажимается эта кнопка изображения, я проверяю, существует ли переменная сеанса session["basket"]
или нет, если нет, то я добавляю значения в список (класс сущности), и я добавляю этот список в сеанс.
если сеанс не пуст, я извлекаю значения из сеанса в список и изменяю список, а затем добавляю список обратно в сеанс.
Проблема:
По какой-то причине я внезапно теряю переменную сеанса. Я проверил свои часы (время), и это непредсказуемо, иногда это занимает менее 1 минуты, иногда 3 минуты, а иногда 5 минут и т. Д....
почему я теряю переменную сеанса?
Я погуглил и нашел - это может произойти, если вы используете Response.Redirect
- без ложного параметра или если вы находитесь в UpdatePanel
и т. д.
На данный момент я теряю переменную на той же странице.
Вся идея помещается в переменную сеанса и выполняет проверку и извлекает переменную сеанса на второй странице aspx
... но это не всегда работает, потому что в большинстве случаев переменные сеанса становятся пустыми. И иногда это работает.
может кто-нибудь посоветовать? что и где нужно проверить? На некоторых страницах веб-сайта (google) рекомендуется использовать кеширование, но кеширование основано на приложении, поэтому все получат одно и то же значение.
На моей странице любой пользователь (аутентифицированный или любой другой пользователь), другими словами, любой пользователь без входа в систему должен иметь возможность сделать заказ (я отправлю счет для оплаты вперед)....
Я не использую ни веб-ферму, ни веб-сад... Я только что проверил IIS - веб-сайт - состояние сеанса - он в процессе, настройки файлов cookie = использовать файлы cookie, имя = asp.net_sessionid, время ожидания = 20....
пожалуйста посоветуй?
It's C#
, ASPX 3.5
, IIS7.5
У меня нет PAGE_LOAD на моей странице ASPX.
// единственное место, где я помещаю sessoin=null, это кнопка ссылки, в остальном я не помещаю null в session["basket"]....
protected void lnkDeleteAllSelected_Click(object sender, EventArgs e)
{
Session["Basket"] = null;
ReloadBasketItems();
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//System.Diagnostics.Debugger.Break();
lvJuridisch.ItemDataBound += new EventHandler<ListViewItemEventArgs>(this.lv_ItemDataBound);
lvJuridisch.DataBound += new EventHandler(lv_DataBound);
}
imgButtonAddtoBasket -> определяется как asp:imagebutton в asp:listview
protected void imgButtonAddtoBasket_Click(object sender, ImageClickEventArgs e)
{
ListViewDataItem lvi = ((sender as ImageButton).NamingContainer) as ListViewDataItem;
DataKey currentDataKey = (lvi.NamingContainer as ListView).DataKeys[lvi.DataItemIndex];
WebShopInfo SingleItem = new WebShopInfo();
SingleItem.cd_type_pub = currentDataKey[0].ToString();
SingleItem.no_pub = currentDataKey[1].ToString();
SingleItem.no_suite_pub = Convert.ToInt32(currentDataKey[2]);
SingleItem.cd_langue = Convert.ToChar(currentDataKey[3]);
SingleItem.lb_titre_red = (lvi.FindControl("HiddenfieldProductRed") as HiddenField).Value;
SingleItem.m_price = Convert.ToDecimal((lvi.FindControl("hiddenField_M_Price") as HiddenField).Value);
SingleItem.nm_price = Convert.ToDecimal((lvi.FindControl("hiddenField_NM_Price") as HiddenField).Value);
SingleItem.mt_pourc_tva = Convert.ToDecimal((lvi.FindControl("hfBTW") as HiddenField).Value);
List<WebShopInfo> lws = new List<WebShopInfo>();
if (Session["Basket"] == null)
{
//Session is empty so add listview to the session....
//Session.Timeout = 20; -- I tried this but this is not working too...
lws.Add(SingleItem);
Session["Basket"] = lws;
}
else
{
//Session is not empty so get asp:listview from the session.
lws = Session["Basket"] as List<WebShopInfo>;
WebShopInfo wsi = lws.Where(a => a.cd_type_pub == SingleItem.cd_type_pub &&
a.no_pub == SingleItem.no_pub &&
a.no_suite_pub == SingleItem.no_suite_pub &&
a.cd_langue == SingleItem.cd_langue).SingleOrDefault<WebShopInfo>();
if (wsi != null)
lws.Remove(wsi);
if (SingleItem.Count > 0)
lws.Add(SingleItem);
Session["Basket"] = lws;
}
ReloadBasketItems();
}
Session["basket"] = null
в разделе page_load? - person V4Vendetta   schedule 25.07.2011