session的用法

定义:保存在服务器内存的数据,sesson 只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上,session在默认情况下20分钟就过期,在页面之中最好不要过多使用,因为这会加重服务器的压力和带宽

增与修:

Session.Add("session名称", 变量名);

Session.Add("userId",userId);

Session.Add("test", DateTime.Now);

Session["test"] = DateTime.Now;

      添加和修改Session的方法是一样的,当指定的Session标识不存在时,系统会添加。当存在时系统会更新。

在一般处理程序中需要加using

1、引入 命名空间:

using System.Web.SessionState;

 public class AddUserInfo : IHttpHandler,IRequiresSessionState //就是这样显示的实现一下,不用实现什么方法
{ public void ProcessRequest(HttpContext context)
{       //...       //这样你就可以如下 操作了 if(context.Session["userAccount"] != null)       {         string account = context.Session["userAccount"].ToString();       }       //...继续下面的代码     }   }

  

删:

Session.Remove("test");  //删除指定的

不要使用Session["test"] = null; 这样只是将值设置为NULL!

移除所有Session项

Session.Clear(); 或 Session.RemoveAll();

终止当前会话状态

Session.Abandon();

当前Session项数量

Session.Count

当前SessionId

Session.SessionID

Session过期时间

在web.config中设置 <sessionState mode="InProc" timeout="20"></sessionState> 分钟值。(未填写时默认是20分钟过期)

如果需要防止过期那就把时间加长并且不允许缓冲

 如何让网页不缓冲
Response.Expires = 0
Response.ExpiresAbsolute = Now() - 1
Response.Addheader “pragma”,”no-cache”
Response.Addheader “cache-control”,”private”
Response.CacheControl = “no-cache

cookie

定义: 保存在客户端中的数据,存储最大4kb的数据。cookie的名/值中的值不允许包含分号、逗号和空白符。认的有效期很短暂,它只能持续在Web浏览器的会话期间,一旦用户关闭了浏览器,cookie保存的数据就丢失了。如果想延长cookie的有效期,可以通过设置max-age属性.

语法:

HttpCookie(String)  //创建并命名Cookie

  HttpCookie(String,String)  //创建命名Cookie并为其赋值

属性:

Domain  //获取或设置Cookie的作用域   接受或返回一个String值

  Expires  //获取或设置Cookie的有效时间  接受或返回一个DateTime值

  HasKeys  //获取一个值,通过该值指示Cookie是否含有子键,返回一个bool值

  HttpOnly //获取或设置一个值,该值指定Cookie是否可以通过客户端脚本访问,接受或返回一个bool值

  Name   //获取或设置Cookie的名称,该值接受或返回一个String值

  Path   //获取或设置该Cookie作用路径,接受或返回一个String值

  Secure  //获取或设置Cookie是否安全传输(即仅通过Https传送),接受或返回一个bool值

  Value    //获取或设置单个Cookie的值,接受或返回一个String

  Values  //获取单个Cookie所包含的键值对的集合,返回一个

C#写入一个Cookie,在前台通过jQuery读取。后端代码

增加 :

 public ActionResult Index()
{
HttpCookie hc = new HttpCookie("userName","admin");
hc.Path = "/";
hc.Expires = DateTime.Now.AddDays(7);
Response.SetCookie(hc);
return View();
} 注意:有的情况下会出现乱码!

存cookie,进行编码:

cookie.Value = HttpUtility.UrlEncode("上海");

取cookie时候,进行解码:
cookieValue = HttpUtility.UrlDecode(cookie.Value);

  添加cookies一般不会有人出错的。。。记得添加Expires就行

修改:

       HttpCookie cookies = Request.Cookies["Porschev"];
cookies["name"] = "wilson Z";
//加上下面一句
Response.Cookies["Porschev"].Expires = DateTime.Now.AddMinutes(-1);

 删除:

删除部分:

            HttpCookie cookies = new HttpCookie("Porschev");
cookies.Expires = DateTime.Now.AddDays(-);
Response.Cookies.Add(cookies); 删除全部: foreach (string cookiename in Request.Cookies.AllKeys)
{
HttpCookie cookies = Request.Cookies[cookiename];
if (cookies != null)
{
cookies.Expires = DateTime.Today.AddDays(-);
Response.Cookies.Add(cookies);
Request.Cookies.Remove(cookiename);
}
}
}

viewstate

在asp时代, 大家都知道一个html控件的值,比如input 控件值,当我们把表单提交到服务器后, 页面再刷新回来的时候, input里面的数据已经被清空. 这是因为web的无状态性导致的, 服务端每次把html输出到客户端后就不再于客户端有联系.

asp.net巧妙的改变了这一点. 当我们在写一个asp.net表单时, 一旦标明了 form runat=server ,那么,asp.net就会自动在输出时给页面添加一个隐藏域

<input type="hidden" name="__VIEWSTATE" value="">
viewstate用来保存状态,包括页面本身, 那么,这里的viewstate就属于页面本身的状态.viewstate则永远不会过期,使用viewstate会增加页面html的输出量,占用更都的带宽,这一点是需要我们慎重考虑的. 另外, 由于所有的viewstate都是存储在一个隐藏域里面,用户可以很容易的通过查看源码来看到这个经过base64编码的值.然后再经过转换就可以获取你存储其中的对象和变量值.

session、cookie、viewstate的更多相关文章

  1. .net学习之Session、Cookie、手写Ajax代码以及请求流程

    1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP ...

  2. JSP简明教程(四):EL表达式语言、JavaBean、Cookie、Session

    EL表达式语言 EL这是Expression Language.的目的是为了简化JSP句法.来看几个例子来清除. ${test} 它会被翻译成<%=test%> ${test.name} ...

  3. localstrage、cookie、session等跨域和跨页面监听更新问题

    localstrage.cookie.session等跨域和跨页面监听更新问题

  4. 【python】-- Django 分页 、cookie、Session、CSRF

    Django  分页 .cookie.Session.CSRF 一.分页 分页功能在每个网站都是必要的,下面主要介绍两种分页方式: 1.Django内置分页 from django.shortcuts ...

  5. iOS “请在微信客户端打开链接” UIWebview加载H5页面携带session、cookie、User-Agent信息 设置cookie、清除cookie、设置User-Agent

    公司新开的一个项目..内容基本上是加载H5页面显示..当时觉得挺简单的..后来发现自己掉坑里了..一些心理历程就不说了..说这个项目主要用到的知识点吧..也是自己踩得坑. 首先说说..这个项目上的内容 ...

  6. (11)Web程序保存状态的几种方式,Application,Session,Cookie,ViewState

    WEb程序保存状态的方式有这样几种: 1.Application:保存在Application中的数据是全局有效的:Application里面存放的应该是访问多修      改较少并且是全局至少大部分 ...

  7. Python3+Selenium2完整的自动化测试实现之旅(四):Selenium-webdriver操作浏览器、Cookie、鼠标键盘、警示框、设置等待时间、多窗口切换

    本篇学习总结webdriver模块操作浏览器.Cookie.鼠标键盘.警示框.设置等待时间.多窗口切换等方法的使用 1    浏览器控制 Selenium-webdriverAPI提供了对页面元素定位 ...

  8. javascript常用函数封装——运动、cookie、ajax、获取行内样式兼容写法、拖拽

    运动.cookie.ajax.获取行内样式兼容写法.拖拽封装大合集. //url,data,type,timeout,success,error function ajax(options){ //- ...

  9. [Asp.Net]状态管理(Session、Application、Cache、Cookie 、Viewstate、隐藏域 、查询字符串)

    Session:  1. 客户在服务器上第一次打开Asp.Net页面时,会话就开始了.当客户在20分钟之内没有访问服务器,会话结束,销毁session.(当然也可以在Web.config中设置缓存时间 ...

  10. Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作

    一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...

随机推荐

  1. $python用装饰器实现一个计时器

    直接上代码: import time from functools import wraps # 定义装饰器 def fn_timer(function): @wraps(function) def ...

  2. RabbitMQ学习之(五)_一个基于PHP的RabbitMQ操作类

    //amqp.php类文件 <?php class Amqp { public $e_name; public $q_name; public $k_route; public $channel ...

  3. cl.exe 命令行编译sqlite3 sqlite3.dll及sqlite3.exe

    有点被宇宙最强的ide惯坏了,封装的太好,不能像gcc那样一步步了解其原理,其实强大的vs背后也有类似gcc的cl.exe 看到How To Compile SQLite http://sqlite. ...

  4. 机器学习:让我们彻底搞懂CNN【转】

    本文转载自:http://115.com/182920/T1266078.html 机器学习:让我们彻底搞懂CNN 上世纪科学家们发现了几个视觉神经特点,视神经具有局部感受眼,一整张图的识别由多个局部 ...

  5. 如何调试ubifs文件系统

    注意内核版本为4.9 在drivers/mtd/ubi/debug.h中加入DEBUG的定义,如下 #ifndef __UBI_DEBUG_H__#define __UBI_DEBUG_H__#def ...

  6. poj_2528 Mayor's posters (线段树经典题+离散化方法)

    由于题面中给定的wall最大长度为10 000 000:若简单用线段树势必会超时. 而注意到题面中规定了输入海报的个数<=1000:因此不妨离散化,使得线段中叶节点仅含有1000个,那么线段最大 ...

  7. cp 复制 mv剪切

    cp cp -p test.rb /home/test    将test.rb copy到test目录,并且保留原文件的属性cp -r Dir/ /home/test    将Dir目录copy到te ...

  8. 异步:asyncio和aiohttp的一些应用(1)

    1. asyncio 1.1asyncio/await 用法 async/await 是 python3.5中新加入的特性, 将异步从原来的yield 写法中解放出来,变得更加直观. 在3.5之前,如 ...

  9. Putting Apache Kafka To Use: A Practical Guide to Building a Stream Data Platform-part 1

    转自: http://www.confluent.io/blog/stream-data-platform-1/ These days you hear a lot about "strea ...

  10. javascript的函数,定义

    函数 function       A               ()          { }函数体开头    函数名    传入的参数     方法 <button onclick=&qu ...