PDA

View Full Version : سوال: تغییر نکردن مقدار session



lord_viper
یک شنبه 22 آذر 1388, 15:00 عصر
با سلام
من برای انتقال اطلاعات بین صفحات از session استفاده کردم مشکل اینجاست که وقتی به سشن مقداری میدم مقدار اون دیگه تغییر نمیکنه هر مقدار جدیدی که بهش میدم باز همون مقدار اولیه رو داره
mod بر روی inproc میباشد و برای مقدار دهی از


session["value"]=textbox1.text;

shocraneh
یک شنبه 22 آذر 1388, 21:26 عصر
mod بر روی inproc میباشد رو نفهمیدم . شاید ایراد کار از همین قسمته

lord_viper
یک شنبه 22 آذر 1388, 21:45 عصر
mod میتونه مقادیر متفاوتی داشته باشه و مربوط به محل نگهداری session ها میشه مثلا inproc در حافظه سرور و اگه برابر sqlserver داخل دیتابیسی در sqlserver نگهداری میشه
بدون مقدار دهی mod هم همین مشکل وجود داره

yekta64
دوشنبه 23 آذر 1388, 11:08 صبح
سلام
شما باید قبل از مقدار دهی مجدد به سشن مقدار محتوای اون رو پاک کنید اصطلاحا باید سشن رو قبل از مقداردهی مجدد پاک کنید که این کار رو با کد یزر می تونید انجام بدید


Session("Vlues")=""


موفق باشید.

lord_viper
سه شنبه 24 آذر 1388, 16:35 عصر
این روش رو هم استفاده کردم
برای بار اول Session مقدار قبلی رو حفظ میکنه و برای بار دوم session مقدار جدید میگیره
(یعنی من باید رو button 2 بار کلیک کنم تا مقدار جدید به سشن اضافه بشه)

yekta64
چهارشنبه 25 آذر 1388, 08:26 صبح
این روش رو هم استفاده کردم
برای بار اول Session مقدار قبلی رو حفظ میکنه و برای بار دوم session مقدار جدید میگیره
(یعنی من باید رو button 2 بار کلیک کنم تا مقدار جدید به سشن اضافه بشه)

سلام ببینید شما گفتید از سشن برای انتقال اطلاعات بین صفحات استفاده می کنید فرض کنید توی صفحه ی اول سشن پر میشه و در صفحه ی دوم از اون استفاده می کنی خوب حالا در صورت بازگشت به صفحه ی اول شما باید سشن رو خالی کنی که با این کار فکر نمی کنم سشن بار دوم خالی بشه اگه من منظور شما رو درست متوجه نشدم شما لطف کنید سوالتون رو و کاری که می خواید انجام بدید رو کاملا توضیح بدید تا اونجا که بتونم کمکتون می کنم

lord_viper
چهارشنبه 25 آذر 1388, 12:10 عصر
من 3 صفحه کوچیک دارم تو هر صفحه کدی شبیه زیر هست


protected void Page_Load(object sender, EventArgs e)
{
if (Session["value"]!= null)
TextBox1.Text=(string)Session["value"];
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["value"] = TextBox1.Text;
Response.Redirect("Default.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Session["value"] = TextBox1.Text;
Response.Redirect("Default3.aspx");
}


تو صفحات دیگه هم مشابه همین کد هست که مقدار textbox رو تو session قرار میده و اونها رو به صفحات دیگه redirect میکنه
هم از session.remove("val") و هم از session.clear() قبل از مقدار دهی مجدد استفاده کردم ولی باز هم این مشکل پابرجا بود

ennovation
چهارشنبه 25 آذر 1388, 12:36 عصر
سلام
به نظر من مشکل شما در timeout است چون که بعد از اینکه وقت timeout بگذره session میتونه همون ID قبلی رو بگیره و مقدار قبلی رو نشون بده .
از دستور ,


Session.Abandon(); استفاده کنید و نتیجه را لطفا برای بقیه دوستان هم اعلام نمایید.

yekta64
چهارشنبه 25 آذر 1388, 12:39 عصر
من 3 صفحه کوچیک دارم تو هر صفحه کدی شبیه زیر هست


protected void Page_Load(object sender, EventArgs e)
{
if (Session["value"]!= null)
TextBox1.Text=(string)Session["value"];
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["value"] = TextBox1.Text;
Response.Redirect("Default.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Session["value"] = TextBox1.Text;
Response.Redirect("Default3.aspx");
}


تو صفحات دیگه هم مشابه همین کد هست که مقدار textbox رو تو session قرار میده و اونها رو به صفحات دیگه redirect میکنه
هم از session.remove("val") و هم از session.clear() قبل از مقدار دهی مجدد استفاده کردم ولی باز هم این مشکل پابرجا بود

دوست عزیر شما در pageload صفحاتتون قبل از کد زیر مقدار سشن رو خالی کنید با این کار دیگه نباید مشکلی باشه


TextBox1.Text=(string)Session["value"];


این راه رو هم امتحات کنید امیدورام درست بشه

lord_viper
جمعه 27 آذر 1388, 09:47 صبح
با سلام
ممنون از دوستان هیچ کدوم عملی نشد
کد رو عوض کردم
قسمت مقدار دهی session رو از دکمه هایمربوط به response.redirect برداشتم و یک دکمه جداگونه براش گزاشتم

(به احتمال زیاد نمیشه مستقیم مزمان به session مقدار داد و به صفحه جدید رفت این 2 کار باید به صورت مجزا انجام بشه که با این کار مشکل ما حل شد)