ورود

View Full Version : مشکل عجیب در اجرای کد زیر



hamednazarzadeh
دوشنبه 28 شهریور 1390, 10:48 صبح
با سلام خدمت دوستان گرامی
بنده توی سایتم یه بخش کاربری دارم که برای ورود به این بخش از ترکیب سشن و کوکی استفاده کردم . توی صفحه درج پیغام ، اگر کاربر مثلا 30 دقیقه توی این صفحه بمونه و بعدش دکمه درج پیغام رو بزنه ، هیچ کدوم از کدهای داخل این دکمه اجرا نمیشن و صفحه فقط رفرش میشه . کد رو میگذارم دوستان لطف کنند بگند اشکال کار کجاست . با تشکر
کد :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;

public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (Request.Cookies["cooki"].Values["usern"] != null && Request.Cookies["cooki"].Values["pass"] != null)
{
string user = Request.Cookies["cooki"].Values["usern"];
Session.Add("Login", "Yes");
Session.Add("User", user);
}
else
{
}
if (Session["Login"].ToString() == "Yes")
{
Session.Timeout = 30;
Page.Title = "خوش آمدید " + Session["User"].ToString() + " کاربر گرامی";
string conection_string = (string)ConfigurationSettings.AppSettings["connectionkey"];
SqlConnection conn = new SqlConnection(conection_string);
conn.Open();
SqlCommand comm;
SqlDataReader reed;
if (!Page.IsPostBack)
{
//////////////
comm = new SqlCommand("Select * From Group1", conn);
reed = comm.ExecuteReader();
ddgp.Items.Clear();
while (reed.Read())
{
ddgp.Items.Add(Convert.ToString(reed["Name"]));
}

conn.Close();
conn.Open();
comm = new SqlCommand("Select * From Type Where Groupname=N'" + ddgp.Text.ToString() + "'", conn);
reed = comm.ExecuteReader();
ddgp0.Items.Clear();
while (reed.Read())
{
ddgp0.Items.Add(Convert.ToString(reed["Name"]));
}
conn.Close();
}
persian nch = new persian();
cDate Farsi = new cDate();
Farsi.displyFormat = "dn;dd;MM;سال;yy";
Label8.Text = Farsi.getPersianDate();
// lblbz.Text = "1";
}
else
{
Response.Redirect("Default.aspx");
}
}
catch
{
Response.Redirect("default.aspx");
}
}

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{

Label11.Text = " ثبت پیام شما با موفقیت انجام شد ";
TextBox1.Text = "";
}
}
توی این کد مثلا اگر بعد از 5 دقیقه دکمه ثبت رو بزنم ، پیغام ثبت پیام شما با موفقیت انجام شد رو میده . ولی اگه بعد از 30 دقیقه دکمه رو بزنم ، صفحه فقط رفرش میشه و هیچ پیامی هم نمیده . احتمالا به سشن مربوط میشه . لطفا بررسی کنید ببینید از چه راهی میشه مشکل رو حل کرد . ممنون

salehbagheri
دوشنبه 28 شهریور 1390, 12:14 عصر
TimeOut مربوط به Session رو بررسی کنید!

hamednazarzadeh
دوشنبه 28 شهریور 1390, 17:29 عصر
زمان اکسپایر شدن session بر روی 24 ساعت تنظیم شده . ولی همین طور که میدونید سرورها برای جلوگیری از اشغال حافظه رم سرور ، خودشون بصورت اتوماتیک بعد از 30 دقیقه در صورتی که از سشن استفاده نشه اون رو از بین می برند . البته من اول لود شدن صفحه سشن رو توسط کوکی پر می کنم . ولی مشکلم اینجاست که بعد از مثلا 30 دقیقه وقتی روی دکمه ثبت پیام کلیک می کنم ، کد هاش اصلا اجرا نمیشه. الان باید چیکار کنم که بعد از 30 دقیقه وقتی روی دکمه ثبت کلیک می کنم ، کدهای مربوط به رویداد کلیک دکمه اجرا بشن؟

Alfred188
دوشنبه 28 شهریور 1390, 23:32 عصر
سلام،
فکر می کنم این مشکل شما از خاصیت session ها باشه!
این چیزی که می گم رو یه امتحان کنید.
دستوری رو که تو page-load قرار دادید رو بردارید و تو یه function بزارید بعد اون رو هم تو page-load قرار بدید و هم تو event دکمه قبل از بقیه دستورات.
امیدوارم مشکلتون حل شه! :لبخندساده:

hamednazarzadeh
سه شنبه 29 شهریور 1390, 10:17 صبح
این کار رو هم کردم . ولی مشکل حل نشد . یعنی توی رویداد دکمه اصلا function اجرا نمیشه . مشکل اینه که بعد از 30 دقیقه که دکمه کلیک میشه ، اصلا کد های داخل رویداد کلیک دکمه اجرا نمیشه و فقط صفحه رفرش میشه!

hamednazarzadeh
چهارشنبه 30 شهریور 1390, 12:08 عصر
من هنوز مشکلم پا بر جاست . کسی نظر دیگه ای نداره ؟ راه حل ؟

Alfred188
چهارشنبه 30 شهریور 1390, 12:50 عصر
سلام،
یه پیشنهاد دیگه، از ajax استفاده کن و به دکمه اجازه postback نده!
ببخشید من دقت نکردم، چرا از session و کوکی استفاده می کنید؟ یعنی نمی خواهید کاربر از سایت شما بعد از گذشت یه مدت خارج بشه مگه این که خودش بخواد؟
اگه اینطوریه خوب session و کوکی رو بردارید و به جاشون از Application استفاده کنید!