global.asax和Session
global.asax
定义:global.asax是一个文本文件,它提供全局可用代码。这些代码包括应用程序的事件处理程序以及会话事件、方法和静态变量。有时该文件也被称为应用程序文件。global.asax 文件中的任何代码都是它所在的应用程序的一部分。每个应用程序在其根目录下只能有一个global.asax文件。
Global.asax 文件(也称作 ASP.NET 应用程序文件)是可选文件,包含用于响应 ASP.NET 或 HttpModule 引发的应用程序级别事件的代码。
事件:
Session
定义:Session可以在服务器端保持一些信息,并且当一个特定的用户在一个特定的WebApp中的不同页面间跳转时,这个信息是可以共享的。
事件:
Session_Start开始
Session_End结束
Session.collection | property | method
属性:
优点:存储用户信息:
·包含用户特定信息
·在会话中跟踪和监视用户信息
·会话期满后销毁对象
下面用一个登录的例子来展示global.asax和Session的用法:
Global.asax
<span style="font-size:18px;">public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application.Add("count",0);
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Application.Lock();
Application["count"]=(int)Application["count"]+1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
}
}</span>
Login
<span style="font-size:18px;">public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.Button2.Attributes.Add("onclick", "window.close();");
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["flag"] = "ok";
user u = new user();
u.name = this.TextBox1.Text;
u.identity = this.DropDownList1.SelectedItem.Text;
Session["user"] = u;
Response.Redirect("Main.aspx");
}
}</span>
judge
<span style="font-size:18px;">public partial class judge : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["flag"] == null || Session["flag"] != "ok")
{
Response.Redirect("loginFail.aspx");
}
}
}</span>