cookie文本方式保存在客户端,可以保存很久,即使离线,但安全性不够高,有被破译可能
Session保存在服务器端,只有在线,才可以保持其状态,也可以通过设置时间,来控制长时间不操作的在线用户从服务器上中断它的连接状态。

解决方案 »

  1.   

    session 是状态,是用户对网页一次访问,使用会话状态,信息存储再web服务器上。
    cookies 是一小段与用户相关的信息。
    cookies 存储时间比session长,给网站相关。如果把背景设置尾保存30天,就可以创建一个TimeSpan对象,表示30天的持续时间。如:
    DateTime dt=DateTime.Now;
    TimeSpan ts=new TimeSpan(30,0,0,0);
    HttpCookie MyCookie=new HttpCookie("Backgroud");
    MyCookie.Value=MyDropDownList.SelectedItem.Text;
    MyCookie=dt+ts;
    Response.Cookies.Add(MyCookie);Session.Clear();清除所有会话。
      

  2.   

    Session是怎样工作的?Session其实是利用Cookie进行信息处理的,(参见后面有关Cookies的介绍),当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。
    为这个用户创建的Cookie的名称是ASPSESSIONID。这个Cookie的唯一目的就是为每一个用户提供不同的身份认证。
    注:如果你对名字是ASPSESSIONID的COOKIE感到好奇,你可以利用ServerVariables集合的COOKIE Header来接受这个信息,参看下面这个脚本:
    <%=Request.ServerVariables(“HTTP COOKIE”) %>
    你可以刷新不止一次而显示结果依然不变。如果希望对ServerVariables集合有更多了解,那么请去看第14章。
    Session变量自己不会存在用户浏览器上。不过,ASPSESSIONID这个cookie需要使用session变量。server使用ASPSESSIONID cookie来将特定的用户和特定的session信息联系起来。没有cookie的话,Server就不会了解到每一个特定用户在网站中移动的信息。
    利用SessionID变量存储ASPSESSIONID cookie和直接对名为ASPSESSIONID的cookie赋值有很大不同。微软利用了一个复杂的数学算法对SessionID进行了加密措施,以防止黑客猜测出SessionID的值并且依据这个获得不该获得的身份或权限。
    注:你可以用两种方法屏蔽掉SessionID,一种是将全站进行屏蔽,另外一种是将一个单独Active Server Page进行相应屏蔽。
    如果想要将整个站点的Session操作进行屏蔽,你可以使用Internet Service Manager。从Application设置对话框,点击Active Server Pages表并且取消对Enable Session State选项的选择。
    你还可以在特定的Active Server Page的首行加入使之屏蔽的语句来进行这种操作。
    <% EnableSessionState=False %>
    由于Session对象使用了Cookies,那么它的兼容性就受到了限制,一些老的浏览器显然是不行的,新的浏览器象是NetScape4.0也提供了屏蔽Cookie的选项。
    这样就出了问题、由于Cookie不能适用于所有浏览器,那么在建站时你就必须注意了,如果你的网站定位于大众通用,就必须考虑各种不同的用户情况。不过现在确实有可以替代的方法,有些取代Cookies来进行身份认证的方法将在后面的章节中进行讨论。
    注:当前浏览器,是否发送一个Cookie在URL是区分大小写的,因此,微软提醒你最好使用同样的大小写方式,例如一起使用/WWW/mypage.asp和/www/mypage.asp肯定会使浏览器出错。
    一       写入Cookie1.   Name 和 Value 属性由程序设定,默认值都是空引用。2.   Domain属性的默认值为当前URL的域名部分,不管发出这个cookie的页面在哪个目录下的。
    例如,http://www.kent.com/application1/login.aspx 页面中发出一个cookie,Domain属性缺省就是www.kent.com ,可以由程序设置此属性为需要的值。3.   Path属性的默认值是根目录,即 ”/” ,不管发出这个cookie的页面在哪个目录下的。可以由程序设置为一定的路径来进一步限制此cookie的作用范围。4.   Expires 属性,这个属性设置此Cookie 的过期日期和时间。如果没有设置 Cookie 的有效期(默认设置),也可以创建 Cookie,但它不会保存到用户的硬盘上,而是会成为用户会话信息的一部分,关闭浏览器或会话超时这个Cookie即会消失,这种Cookie称作非永久性的 Cookie。存放SessionID的Cookie就是这样的一种Cookie,它不存放在硬盘上,只存在内存之中。5.   将要发出的Cookie附加到Response的Cookies属性中就可以将此Cookie发送到客户端:Reponse.Cookies.Add(Cookie)6.   Domain属性+Path属性 相同的所有Cookie 在客户端都存在一个文件中,Cookie之间以”*”分割。每个Cookie的第一行是 Cookie 的名称,第二行是值,第三行是Domain属性+Path属性组成的一个字符串,指示此Cookie的作用域,其余各行则包含 Cookie 的日常处理信息,例如过期日期和时间。Cookie 中还有一个简单的校验和,如果更改 Cookie 名称或值的长度,浏览器就会检测到修改并删除该 Cookie。
      

  3.   

    又长知识了,以前只知道一个是在服务端(session),一个是写到客户端(cookie);
      

  4.   

    Session和Cookie主要是用来记录用户在一些信息的
    Session是将用户的信息记录在服务器端,而Cookie是将信息记录在用户的硬盘上。
    如从安全的角度来考虑的话,最好是用Session,
    但若从经济的角度来看的话,最好是选用Cookie,因为在服务器的空间是宝贵的。