014-Session服务器状态保持

本文详细介绍了ASP.NET中的Session机制,包括Session对象的创建、使用及销毁过程。还讲解了如何在禁用Cookie的情况下配置Session,并提供了跨页面共享信息的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始并为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

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SessionWrite.aspx.cs" Inherits="t4_State.SessionWrite" %>
 2 
 3 <!DOCTYPE html>
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8     <title></title>
 9 </head>
10 <body>
11     <form id="form1" runat="server">
12         <div>
13             <%=Session.SessionID %>
14             <hr />
15             <a href="SessionRead.aspx">读Session</a>
16         </div>
17     </form>
18 </body>
19 </html>
1     public partial class SessionWrite : System.Web.UI.Page
2     {
3         protected void Page_Load(object sender, EventArgs e)
4         {
5             Session["xlb"] = "小龙包";
6         }
7     }

SessionRead.aspx

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SessionRead.aspx.cs" Inherits="t4_State.SessionRead" %>
 2 
 3 <!DOCTYPE html>
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8     <title></title>
 9 </head>
10 <body>
11     <form id="form1" runat="server">
12         <div>
13             <%=Session["xlb"] %>
14         </div>
15     </form>
16 </body>
17 </html>

 

转载于:https://www.cnblogs.com/ninghongkun/p/6291252.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值