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 ...
随机推荐
- Sybase isql常用命令
isql -Usa -S服务名 --常规登录 isql -Usa -S服务名 -Jcp936 --sa用户在客户端使用字符集cp936登录 C:\Users\Administrator>isql ...
- 二、Mp3帧分析(标签帧)
Mp3文件由帧组成,帧分成标签帧和数据帧,本文就Mp3文件的帧进行分析. 一.标签帧 MP3帧头中除了存储一些象private.copyright.original的简单音乐说明信息以外,没有考虑存放 ...
- git使用经验
一直想写一点关于git的文章,但是平时太懒了,没有写,现在写些经验这里,方便以后自己忘记了.
- achartengine andorid图像引擎入门
最近在帮机械学院开发一个app 用了第三方的图像引擎——achartengine功能还算强大(虽然相比于Html那些第三方图像引擎还是差点不过也够用了) 入门: 参考http://blog.csdn. ...
- queue 之团队队列(摘)
有t个团队的人正在排一个长队.每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后.如果没有任何一个队友排队,则他会排到长队的队尾. 输入每个团队中所有队员的编号,要求支持如下 ...
- JAVA中List与Array之间互换
1.Array转List ArrayList<String> list = new ArrayList<String>(); String[] arr = new String ...
- MyBatis 注解
注解 目标 相对应的 XML 描述 @CacheNamespace 类 <cache> 为给定的命名空间 (比如类) 配置缓存. 属性:implemetation,eviction, fl ...
- source install MacPorts--checking for Tcl configuration... configure: error: Can't find Tcl configuration definitions
If you installed MacPorts using the package installer, skip this section. To install MacPorts from t ...
- Windows下使用TensorFlow
上一篇日志(http://www.cnblogs.com/huidong/p/5426556.html)写了如何在Windows下安装Docker,并且在VM上安装TensorFlow. 在Windo ...
- codeforces 518A. Vitaly and Strings
A. Vitaly and Strings time limit per test 1 second memory limit per test 256 megabytes input standar ...