会话、服务器-ASP.NET中Session的用法-by小雨
在写这篇文章之前,xxx已经写过了几篇关于改会话、服务器-主题的文章,想要了解的朋友可以去翻一下之前的文章
我们可以应用 Session 象对存储特定的用户会话所需的息信。当用户在应用程序的页之间跳转时,存储在 Session 象对中的量变不会除清,而用户在应用程序中拜访页面时,这些量变终始存在。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将动自建创一个 Session 象对。当会话过期或被弃放后,服务器将终止该会话。
通过向客户程序发送一唯的 Cookie 可以管理服务器上的 Session 象对。当用户第一次请求 ASP 应用程序中的某个页面时,ASP 要检查 HTTP 头息信,查看否是有在报文中有名为 ASPSESSIONID 的 Cookie 发送过去,如果有,则服务器会动启新的会话,并为该会话成生一个全局一唯的值,在把这个值作为新 ASPSESSIONID Cookie 的值发送给客户端,是正应用这类 Cookie,可以拜访存储在服务器上的属于客户程序的息信。Session 象对最常见的作用就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就能够将该息信存储在 Session 象对中。另外其还经常被用在鉴别客户份身的程序中。要意注的是,会话状态仅在支撑 cookie 的浏览器中留保,如果客户闭关了 Cookie 选项,Session 也就不能发挥作用了。
Session的基本属性:
一、属性
1、SessionID
SessionID 属性返回用户的会话标识。在建创会话时,服务器会为个一每会话成生一个独自的标识。会话标识以长整形数据类型返回。在很多情况下 SessionID 可以用于 WEB 页面册注统计。
2、TimeOut
Timeout 属性以分钟为单位为该应用程序的 Session 象对指定超时时限。如果用户在该超时时限以内不刷新或请求网页,则该会话将终止。
二、方法
Session 象对唯一一个方法,就是 Abandon,Abandon 方法删除有所存储在 Session 象对中的象对并释放这些象对的源。如果您未明确地用调 Abandon 方法,一旦会话超时,服务器将删除这些象对。当服务器处置完当前页时,面下示例将释放会话状态。
< % Session.Abandon %>
三、件事
Session 象对有两个件事可用于在 Session 象对动启和释放是行运程过。
1、Session_OnStart 件事在服务器建创新会话时生产。服务器在执行请求的页之前先处置该脚本。Session_OnStart 件事是置设会话期量变的最佳时机,因为在拜访任何页之前会都先置设它们。
尽管在 Session_OnStart 件事含包 Redirect 或 End 方法用调的情况下 Session 象对仍会持保,然而服务器将停止处置 Global.asa 文件并触发 Session_OnStart 件事的文件中的脚本。
为了确保用户在打开某个特定的 Web 页时终始动启一个会话,就能够在 Session_OnStart 件事中用调 Redirect 方法。当用户进入应用程序时,服务器将为用户建创一个会话并处置 Session_OnStart 件事脚本。您可以将脚本含包在该件事中以便检查用户打开的页是否是动启页,如果不是,就示指用户用调 Response.Redirect 方法动启网页。程序如下 :
< SCRIPT RUNAT=Server Language=VBScript>
Sub Session_OnStart
startPage = "/MyApp/StartHere.asp"
currentPage = Request.ServerVariables("SCRIPT_NAME")
if strcomp(currentPage,startPage,1) then
Response.Redirect(startPage)
end if
End Sub
< /SCRIPT>
上述程序只能在支撑 cookie 的浏览器中行运。因为不支撑 cookie 的浏览器不能返回 SessionID cookie,所以,每当用户请求 Web 页时,服务器会都建创一个新会话。这样,对于个每请求服务器都将处置 Session_OnStart 脚本并将用户重定向到动启页中。
2、Session_OnEnd 件事在会话被弃放或超时生产。
关于应用 Session 象对须要意注的事项 Application 象对邻近,请参照前文。
会话可以通过以下三种方法动启 :
1、一个新用户请求拜访一个 URL,该 URL 标识了某个应用程序中的 .asp 文件,并且该应用程序的 Global.asa 文件含包 Session_OnStart 程过。
2、用户在 Session 象对中存储了一个值。
3、用户请求了一个应用程序的 .asp 文件,并且该应用程序的Global.asa 文件应用 < OBJECT> 签标建创带有会话作用域的象对的实例。
如果用户在指定时光内没有请求或刷新应用程序中的任何页,会话将动自束结。这段时光的默许值是 20 分钟。可以通过在 Internet 服务管理器中置设“应用程序选项”属性页中的“会话超时”属性变改应用程序的默许超时制限置设。应据依您的 Web 应用程序的要求和服务器的内存空间来置设此值。例如,如果您望希浏览您的 Web 应用程序的用户在每一页仅停顿几分钟,就应该短缩会话的默许超时值。太长的会话超时值将致使打开的会话多过而耗尽您的服务器的内存资源。对于一个特定的会话,如果您想置设一个小于默许超时值的超时值,可以置设 Session 象对的 Timeout 属性。例如,面下这段脚本将超时值置设为 5 分钟。
< % Session.Timeout = 5 %>
当然你也可以置设一个大于默许置设的超时值,Session.Timeout 属性决议超时值。你还可以通过 Session 象对的 Abandon 方法显式束结一个会话。例如,在表格中供给一个“出退”钮按,将钮按的 ACTION 参数置设为含包列下令命的 .asp 文件的 URL。
< % Session.Abandon %>
Session的用法:
一、应用Session设定限权
Session简介:
简略来讲就是服务器给客户端的一个编号。当一台WWW服务器行运时,可能有若干个用户浏览正在运正在这台服务器上的站网。当个每用户次首与这台WWW服务器建立接连时,他就与这个服务器建立了一个Session,同时服务器会动自为其分配一个SessionID,用以标识这个用户的一唯份身。这个SessionID是由WWW服务器随机生产的一个由24个字符构成的字符串。
Session的次初应用:
protected void Page_Load(object sender, EventArgs e)
{//这是页面的初始化
if (!Page.IsPostBack)
{//断判否是为次初执行
if (Object.Equals(Session["AdminName"], null))
{//断判在Session["AdminName"]否是存在值
Response.Redirect("ErrorPage.aspx", true);
}
else
{//要是存在则记录下这个人的用户名
Name.Text = Session["AdminName"].ToString();
}
}
}
二、停止页面传值
在页面之间传递息信有多许方法:
第一:可以应用QueryString
第二:可以应用Session
第三:Server.Transfer
这三种传值方法都有利有弊,面下我以我的验经给大家解讲一下
首先:QueryString
QueryString是一种非常简略的传值方法,其点缺就是会把要传递的值表现在浏览器的地址栏中,并且此方法不能够传递象对。如果你想传递一个安全性不是那么要重或者是一个简略的值数时。应用此方法最好不过。
面下通过一个小例子来讲明一下
1.建创一个Web页面,叫SendMessage.aspx
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,与一个Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{
String Url = "ReceiveMessage.aspx?Name=" +
TxtName.Text + "&Email=" + TxtEmail.Text;
Response.Redirect(Url);
}
3.再建创一个接收息信页面,叫ReceiveMessage.aspx
4.在页面内添加两个Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{//应用Request来接收由上个页面传递过去的值,别分表现在页面上
LbName.Text = Request.QueryString["Name"];
LbEmail.Text = Request.QueryString["Email"];
}
再次:应用Session量变
应用Session量变传值是一种最常见的方法了,此种方法不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session量变的值Remove后,才消逝
面下举例说明
1.建创一个页面,叫SendSession
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,添加一个Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{//可以应用Session的Add方法
Session["Name"] = TxtName.Text;
//可以应用Session.Add("Name",TxtName.Text);
Session["Email"] = TxtEmail.Text;
//可以应用Session.Add("Email",TxtEmail.Text);
Response.Redirect("ReceiveMessage.aspx");
}
3.再建创一个页面,叫ReceiveMessage.aspx
4.在页面内添加两个Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{
LbName.Text = Session["Name"].ToString();
LbEmail.Text = Session["Email"].ToString();
Session["Name"].Remove();
Session["Email"].Remove();
//应用束结要除清Session中的值
}
这是应用Session传递值数,此方法消耗服务器的资源,尽量少应用
再次:应用Server.Transfer
这类传递方法有点庞杂,但也可所以一种值传递方法
面下举例说明一下:
1.建创一个页面,叫SendMessage.aspx
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,添加一个Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{
Server.Transfer("ReceiveMessage.aspx");
}
再添加一个属性
public String Name
{
Get
{
return TxtName.Text;
}
}
public String Email
{
Get
{
return TxtEmail.Text;
}
}
3.再建创一个页面,叫ReceiveMessage.aspx
4.在页面放两个Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{
//建创原始窗体的实例SendMessage wf1
//取得实例化的句柄
wf1=(SendMessage)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
文章结束给大家分享下程序员的一些笑话语录:
有一天,一个男人穿越森林的时候,听到一个细微的声音叫住他。他低头一看,是一只青蛙。
“如果你亲我一下,我会变成一个美丽的公主哦。”男人一言不发,把青蛙捡起来,放入口袋。
“如果你亲我一下,我会变成一个美丽的公主哦。而且,我会告诉我遇到的每一个人,你是多么聪明和勇敢,你是我的英雄。”男人把青蛙拿出来,对着它微微一笑,又把它放回口袋。
“如果你亲我一下,我会变成一个美丽的公主,然后我愿意成为你的爱人一星期。”男人又把青蛙拿出来,对着它微微一笑,把它放回口袋。
“如果你亲我一下,我会变成一个美丽的公主,然后我愿意成为你的爱人一年,而且你可以对我做任何事。”再一次,男人把青蛙拿出来,对着它微微一笑,又把它放回口袋。
最后,青蛙无力地问:“我开出了这么好的条件,为什么你还不肯吻我?”男人说:“我是一个程序员,我可没时间和什么公主鬼混。不过,拥有一个会说话的青蛙,倒是蛮酷的。”