asp.net session的原理
session,会话,指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。
A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。
当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。当用户访问web服务器,则被分配一个sessionID,会话结束或超时时自动释放。没有存储类型限制,存储大小只受内存限制。

设置页的代码:
protected void Button1_Click(object sender, EventArgs e)
{
Session["txt1"] = (TextBox1.Text == "") ? "空字符串" : TextBox1.Text;
}
protected void Button2_Click(object sender, EventArgs e)
{
string[] str = TextBox2.Text.Split(',');
Session["txt2"] = str;
}
protected void Button3_Click(object sender, EventArgs e)
{
Session["cal"] = Calendar1;
}
protected void Button4_Click(object sender, EventArgs e)
{
Session.Add("txt1", "");
}
protected void Button5_Click(object sender, EventArgs e)
{
Response.Redirect("Default2.aspx");
}
目标页:
protected void Page_Load(object sender, EventArgs e)
{
if(Session["txt1"]!=null)
{ Label1.Text = Session["txt1"].ToString(); }
else
{ Label1.Text = "session为null"; } if(Session["txt2"]!=null )
{ string[] str = (string[])Session["txt2"];
for (int i = ; i < str.Length; i++)
Label2.Text += str[i] + "\n";
} if(Session["cal"]!=null)
{
Calendar cal = (Calendar)Session["cal"];
Label3.Text = cal.SelectedDate.ToShortDateString();
} if (Session["txt1"] != null)
{ Label4.Text = Session["txt1"].ToString(); }
else
{ Label4.Text = "session为null"; }
}

添加重名的session后,会将原来的session覆盖。
创建session有两种方式:Session["txt1"]=“xxxx”和Session.Add("txt1", "234345");
在获取session时,返回的是一个object对象,因此要注意显示转换类型。
清除某一个session:session.remove("keyName");
清除所有的session:Session.Abandon();
注意,如果是在按钮中清除session,那么由页面的生命周期可以知道,pageload事件中仍能读取到清除之前的session值,如果想得到清除之后的值,就需要在清除之后,再一次获取页面response.redirect(当前url);

protected void Button5_Click(object sender, EventArgs e)
{
Session["userName"] = TextBox1.Text;
Response.Redirect("Default2.aspx");
}
目标页面:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["userName"] == null)
Response.Redirect("Default.aspx");
else
Label1.Text += Session["userName"].ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
Session.Remove("userName");
Response.Redirect("Default2.aspx");//这里也可以回到登陆页面
}
asp.net session的原理的更多相关文章
- ASP.NET Session的实现原理分析
ASP.NET Session的实现原理分析 用户向服务器提交请求时,服务器都会给每个用户分配一个SessionId,保存在用户浏览器的Cookies中,SessionId是全局的,也就是说只要Coo ...
- ASP.NET Session原理及处理方法
session是怎么存储,提取的 1.在服务器端有一个session池,用来存储每个用户提交session中的数据,Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服 ...
- ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)
ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...
- ASP.NET的运行原理与运行机制 如何:为 IIS 7.0 配置 <system.webServer> 节
https://technet.microsoft.com/zh-cn/sysinternals/bb763179.aspx 当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的 ...
- ASP.NET Session丢失的情况
正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的. 现在我就把原 ...
- ASP.NET Session丢失的解决方案
正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的.现在我就把原因 ...
- ASP.NET Session丢失问题原因及解决方案
正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的. ASP.NE ...
- ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界
HttpContext是ASP.NET中的核心对象,每一个请求都会创建一个对应的HttpContext对象,我们的应用程序便是通过HttpContext对象来获取请求信息,最终生成响应,写回到Http ...
- ASP.NET Session 简单超实用使用总结
一.概述 Session用于存储特定的用户会话所需的信息 . Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是一种无状态的协议. Session中文是“会话”的意思,在ASP.NE ...
随机推荐
- ADB命令解析
ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机). 它的主要功能有: * ...
- 【二分答案】 【POJ3497】 【Northwestern Europe 2007】 Assemble 组装电脑
Assemble Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3171 Accepted: 1013 Descript ...
- Ubuntu 12.04 搭建 Eclipse Android 开发环境(转)
Ubuntu 12.04 搭建 Eclipse Android 开发环境 http://blog.sina.com.cn/s/blog_93dc666c0101b39p.html (2012-09-0 ...
- Android一次退出所有Activity的方法(升级版)
一.思路和方法: 首先创建一个ActivityManager类来存放Activity的对象. 返回ActivityManager的对象,供BaseActivity来进行操作. 所有其他子Activit ...
- jquery中this与$this的区别
来源:http://www.jb51.net/article/19738.htm jQuery中this与$(this)的区别 $("#textbox").hover( funct ...
- c++如何生成随机数
一.使用rand()函数 头文件<stdlib.h> (1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_ ...
- sublime 前端开发工具
http://code.kpman.cc/2014/10/14/sublime-text-3-mac-%E6%8C%87%E5%8D%97/ gif 屏幕录制:http://recordit.co/ ...
- OC——动态添加Button和监听UIAlertView按钮
1:动态添加uibutton - (IBAction)addButton:(id)sender { CGRect frame = CGRectMake(90, 200, 200, 60); UIBut ...
- DataSet 图解
DataSet层次结构中的类请参见表所示: 类 说明 DataTableCollection 包含特定数据集的所有DataTable对象 DataTable 表示数据集中的一个表 DataColumn ...
- 去除除服串中的某些字符,不用String内置方法
import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static vo ...