014-Session服务器状态保持

时间:2023-01-22 19:28:12

014-Session服务器状态保持

开始并为Session赋值:
Session[“uName”]=“CNYaoMing”;
取值:
string strName = Session[“uName”].ToString();
销毁(取消/退出):
Session.Abandon();//销毁服务器端的Session对象Session.Clear();//清空服务端的Session对象里的键值对,Session对象并没有从Session池里销毁。类似于集合的Clear(),把集合中的内容清空,集合本身还在。

禁用Cookie后使用Session

在WebConfig文件中配置:
<system.web>
<compilation debug="false" targetFramework="4.0" />
<sessionState cookieless="AutoDetect"></sessionState>
</system.web>

<!--配置禁用cookie,使用url来保持Session-->
<sessionState cookieless="true">
</sessionState>

<!--配置自己的SessionID的键-->
<sessionState cookieless="false" cookieName="MyAsp_NetSessionID">
</sessionState>

-》Session

《1》每个浏览器在第一次访问服务器时,都会由服务器创建一个Session对象
《2》在创建Session对象时,都会生成一个唯一的编号
《3》在创建Session对象时,会向浏览器中写一个Cookie,值就是Session对象的编号Session_Id
-》Session对象是HttpSessionState类型,是一个键值对集合对象
主要属性:TimeOut,SessionId,Count
主要方法:Clear(),Abandon()
-》示例1:跨页面共享信息
查看报文,了解存储方式
-》关于SessionId属性:表示会话的标识
如果使用过Session,则客户端会以SessionId为键在Cookie中存储信息,每次请求时,这个信息都会在请求头的Cookie中被提交到服务器,服务器会认为这是一次会话
如果未使用过Session,客户端不会存储会话信息,请求头中没有关于Session的Cookie信息,则认为这是一次新的请求,会生成一个新的SessionId
-》大多数情况下,session依赖于cookie
如果cookie被禁用,则session也就不能用了
session的编号被存储到cookie中
-》缺陷:会造成服务器端压力过大等问题,推荐去session化而采用分布式缓存
-》说明:默认在ashx中是不能使用session的
接口IRequiresSessionState:并没有实现任何功能,只是告诉Application在走到第七个事件时,为一般处理程序启用session功能

SessionWrite.aspx

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SessionWrite.aspx.cs" Inherits="t4_State.SessionWrite" %>

 <!DOCTYPE html>

 <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%=Session.SessionID %>
<hr />
<a href="SessionRead.aspx">读Session</a>
</div>
</form>
</body>
</html>
     public partial class SessionWrite : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["xlb"] = "小龙包";
}
}

SessionRead.aspx

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SessionRead.aspx.cs" Inherits="t4_State.SessionRead" %>

 <!DOCTYPE html>

 <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%=Session["xlb"] %>
</div>
</form>
</body>
</html>