PDA

View Full Version : سوال: خطا بعد از Response.Redirect



fakhravari
چهارشنبه 08 شهریور 1391, 12:42 عصر
با سلام
try
{
Session["CurrentUser"] = User;
Response.Redirect(@"~/Default.aspx");
}
catch
{
// دستورات
}
دوستان دستورات اجرا میشود و به صفحه Default هم میرود اما دستورات داخل catch هم اجرا میشود.
مشکل از کجاست؟:متفکر:

dorparasti
چهارشنبه 08 شهریور 1391, 13:41 عصر
استفاده از Response.Redirect وقتی که از پارامتر دوم استفاده نکنید باعث بروز یک استثنا از نوع ThreadAbortException میشه . چون این تابع در درون خودش تابع Response.End رو فراخوانی می کنه . برای اجتناب از این اتفاق باید از overload این تابع استفاده کنید و مقدار پارامتر دوم رو false قرار بدید تا تابع Response.End فراخوانی نشه . البته این یک مشکل دیگه رو ایجاد می کنه ، چون اگر تابع Response.End فراخوانی نشه کدهایی که احتمالا بعد از Response.Redirect قرار دارن هم اجرا میشن . یک راه حال برای این مشکل هم استفاده از کلمه return درست بعد از تابع Response.Redirect هستش .

moslem.hady
چهارشنبه 08 شهریور 1391, 13:50 عصر
سلام. یه false بذار
try
{
Session["CurrentUser"] = User;
Response.Redirect(@"~/Default.aspx",false);
}
catch
{
// دستورات
}

Sirwan Afifi
چهارشنبه 08 شهریور 1391, 15:05 عصر
Response.Redirect(@"~/Default.aspx");
return;