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编码的值.然后再经过转换就可以获取你存储其中的对象和变量值.

最新文章

  1. 【Google Chrome】 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource问题解决
  2. ASP.NET MVC 自己实现登陆验证过滤器
  3. PHP面向对象——类常量,魔术常量与延期绑定
  4. 通过cmd修改注册表并设置cmd窗口的大小
  5. SQL Server 阻止了对组件 &#39;Ad Hoc Distributed Queries&#39; 的 STATEMENT&#39;OpenRowset/OpenDatasource&#39; 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 &#39;Ad Hoc Distributed Queries&#39;。有关启用 &#39;Ad Hoc Distributed Que
  6. MySQL数据类型(四)
  7. Cookie[1]
  8. web.config中的profile
  9. Tomcat查看用户名密码
  10. linux下mysql连接jar包的位置在哪里?
  11. Mycat安装与使用
  12. Topshelf 一个简化Windows服务开发的宿主服务框架
  13. c# 图片加水印
  14. pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
  15. Hi3516A开发--接触(转)
  16. python中封装、继承、多态
  17. Leaflet_扩展Leaflet:类(2017-10-26)
  18. 环形数组 最大子段和 dp
  19. QT信号槽详解
  20. Android修行之路------List view无法获取监听方法

热门文章

  1. C#小票打印机动态纸张尺寸
  2. BestCoder #58 div1
  3. Java应用开发中的SQL注入攻击
  4. Linux中Qt的安装
  5. [pixhawk笔记]5-uORB消息传递
  6. Java-JVM调优常见配置举例
  7. 非root权限 安装更新gcc
  8. 在Linux终端管理文件你要知道的11个命令
  9. iOS开发值得学习的Demo
  10. [BZOJ2688]折线统计