读书人

关于设置sesson定时覆盖的有关问题?

发布时间: 2014-01-05 18:22:56 作者: rapoo

关于设置sesson定时覆盖的问题??
如题,我十分钟获取一个值,然后把值传入sesson,把这段代码放在site.master里面,能不能实现功能?


protected void Page_Load(object sender, EventArgs e)
{
string qh = DateTime.Now.ToString("yyyyMMdd");
DateTime dt1 = DateTime.Now;
int huor = Convert.ToInt32(dt1.Hour.ToString());
int minute = Convert.ToInt32(dt1.Minute.ToString());
int n = (huor * 60 + minute) / 10;
string n3 = n.ToString();
string qishu;
if (n3.Length < 3)
{
qishu = qh + "0" + n3;
}
else
{
qishu = qh + n3;
}
Session["qishu"] = qishu;
}

[解决办法]
这种情况应该在global.asax的Application_BeginRequest事件中比较合适,你上面的代码问题多多,比如这个:int huor = Convert.ToInt32(dt1.Hour.ToString()); dt1.Hour本来就是int类型,何必把它转换成string然后再用Convert.ToInt32转成int??而且你判断是否间隔了十分钟的代码实在是看不懂。
[解决办法]

public class Global : System.Web.HttpApplication
{
public static Timer gtimer = null;
void Application_Start(object sender, EventArgs e)
{
gtimer = new Timer(300000);
gtimer.Elapsed += new System.Timers.ElapsedEventHandler(this.TimerEventFunction);
gtimer.AutoReset = true;
gtimer.Enabled = true;
}
private void TimerEventFunction(object sender, ElapsedEventArgs e)
{
TestWeb.Class.StockInfoBLL sib = new Class.StockInfoBLL();
DataTable dtTop = sib.GetStockTop();
DataTable dtAsc = sib.GetStockAsc();
if (dtTop.Rows.Count == 0)
{
dtTop = (DataTable)System.Web.HttpContext.Current.Cache["StockTop"];
}
if (dtAsc.Rows.Count == 0)
{
dtAsc = (DataTable)System.Web.HttpContext.Current.Cache["StockTop"];
}
}

void Application_End(object sender, EventArgs e)
{


// 在应用程序关闭时运行的代码

}

void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码

}

void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码

}

void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。

}

}


每五分钟缓存一次数据,楼主你可以借签一下!

读书人网 >asp.net

热点推荐