asp.net state

上一篇 / 下一篇  2009-12-30 16:00:07 / 个人分类:C# & .Net

1、cookie:

   (1)了解cookie

       我们比较常用,无论做管理系统还是做网站,在用它之前我们应该知道它是什么---Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息,说白了就是存在客户端的机器上的一个字符串,当用户请求站点中的页面时应用程序发送给该用户的不仅仅是一个页面,还有一个包含 日期和时间的 Cookie,用户的浏览器在获得页面的同时还获得了该 Cookie,并将它存储在用户硬盘上的某个文件夹中。当用户下次再请求原来的页面时,浏览器便会在本地硬盘上查找与该 URL 关联的 Cookie。如果该 Cookie 存在,浏览器便将该 Cookie 与页请求一起发送到您的站点。然后,应用程序便可以确定该用户上次访问站点的日期和时间。您可以使用这些信息向用户显示一条消息,也可以检查到期日期。 Cookie 与网站关联,而不是与特定的页面关联。因此,无论用户请求站点中的哪一个页面,浏览器和服务器都将交换 Cookie 信息。用户访问不同站点时,各个站点都可能会向用户的浏览器发送一个 Cookie;浏览器会分别存储所有 Cookie。

(2)什么时候用cookie
      短暂的存储信息,例如购物车信息;信息量小的信息,因为cookie最大支持4096字节。

(3)cookie基本实例

 cookie写法
        //第一种写法
        Response.Cookies["username"].Value = "jack.feng";
        Response.Cookies[
"username"].Expires = DateTime.Now.AddDays(-1);
        
//第二种写法
        HttpCookie acookie = new HttpCookie("username");
        acookie.Value 
= DateTime.Now.ToString();
        acookie.Expires 
= DateTime.Now.AddDays(-1);
        Response.Cookies.Add(acookie);
(4)cookie扩展实例1
为了方便管理cookie本身提供了一个集合的概念就是键值
Response.Cookies["userInfo"]["userName"] ="patrick";
Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString();
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

HttpCookie aCookie =newHttpCookie("userInfo");
aCookie.Values["userName"] ="patrick";
aCookie.Values["lastVisit"] = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
(5)cookie扩展实例2
正常来讲cookie是针对整个网站的,但是cookie本身也提供了一个方法.path属性来限制访问权限。
例如
代码
HttpCookie appCookie = new HttpCookie("AppCookie");
appCookie.Value 
= "written " + DateTime.Now.ToString();
appCookie.Expires 
= DateTime.Now.AddDays(1);
appCookie.Path 
= "/Application1";
Response.Cookies.Add(appCookie);

(6)cookie作用范围

一般来说如果不做特殊设置的话cookie只作用当前域名下例如当前站点时http://www.xxx.com/那么cookie只能在http://www.xxx.com/aa级别或者更深的里面.如果有二级域名的话例如bb.xxx.com和cc.xxx.com的话,就要用到cookie的另一个重要属性cookie的domain属性--关联域

代码如下

 

Response.Cookies["domain"].Value = DateTime.Now.ToString();
Response.Cookies[
"domain"].Expires = DateTime.Now.AddDays(1);
Response.Cookies[
"domain"].Domain = "contoso.com"

 

 

那么如何在两个不同域名之间共享cookie呢,那么就要用到单点登录的知识了,我知道的只有通过url把cookie值传递一个字符串过去,一定要是加密后的哈哈.如有其它的好办法,赶紧告诉我~

(7)读取cookie

这个比较简单了.使用page类的request对象,标准写法

if(Request.Cookies["userName"] !=null)
    Label1.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

if(Request.Cookies["userName"] !=null)
{
    HttpCookie aCookie = Request.Cookies["userName"];
    Label1.Text = Server.HtmlEncode(aCookie.Value);

(8)删除cookie

说是删除cookie其实cookie是删除不了得,这里有个变通的方法就是从新创建一个cookie实例覆盖掉原来的

HtppCookie aCookie;
stringcookieName;
intlimit = Request.Cookies.Count;
for(inti=0; i<limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie =newHttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(aCookie);
}

Session

一、背景

    当用户在 Web 应用程序中导航 ASP.NET 页时,ASP.NET 会话状态使您能够存储和检索用户的值。HTTP 是一种无状态协议。这意味着 Web 服务器会将针对页面的每个 HTTP 请求作为独立的请求进行处理。服务器不会保留以前的请求过程中所使用的变量值的任何信息。ASP.NET 会话状态将来自限定时间范围内的同一浏览器的请求标识为一个会话,并提供用于在该会话持续期间内保留变量值的方法。默认情况下,将为所有 ASP.NET 应用程序启用 ASP.NET 会话状态。

2)、session介绍

1、存储位置:服务器端内存中,从新登录的话则从新请求sessionID,而cookie存在客户端文件中,浏览器的会话使用存储在 SessionID 属性中的唯一标识符进行标识。会话 ID 使 ASP.NET 应用程序能够将特定的浏览器与 Web 服务器上相关的会话数据和信息相关联。会话 ID 的值在浏览器和 Web 服务器间通过 Cookie 进行传输,如果指定了无 Cookie 会话,则通过 URL 进行传输。

2、存储数据类型:任意类型,使用时候使用sessionID来检索,用强类型转换。

3、session共享:通过URL传递参数或者通过数据库哈哈,目前没想什么其他方法。

4、应用场景:cookie适用于存储用户名和密码、以及网站配色方案,session可以用于校验用户变量。



TAG:

 

评分:0

我来说两句

日历

« 2024-04-29  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 5536
  • 日志数: 39
  • 建立时间: 2009-09-05
  • 更新时间: 2010-01-22

RSS订阅

Open Toolbar