要存储一个Cookie变量,可以通过Response对象的Cookies集合,其使用语法如下。
Response. Cookies[varName].Value=值;
其中,varName为变量名。
要取回Cookie,使用Request对象的Cookies集合,并将指定的Cookie集合返回,其使用语法如下。
变量名=Request.
Cookies[varName].Value;
下面示例分别通过Response对象和Request对象的Cookies属性将客户端的IP地址写入Cookie中并读取出来。执行程序,示例运行结果如图1所示。

图1 Cookie示例
程序实现的主要步骤:
新建一个网站,默认主页Default.aspx,在Default.aspx页面上添加两个Button控件和一个Label控件,它们的属性设置如表1所示。
表1 Default.aspx页面中控件属性设置及其用途
|
控件类型 |
控件名称 |
主要属性设置 |
用途 |
|
标准/Label控件 |
Label1 |
|
显示用户IP |
|
标准/Button控件 |
btnWrite |
Text属性设置为“将用户IP写入Cookie” |
将用户IP保存在Cookie中 |
|
标准/Button控件 |
btnRead |
Text属性设置为“将用户IP从Cookie中读出” |
将用户IP从Cookie中读出 |
单击【将用户IP写入Cookie】按钮,将触发按钮的Click事件。在该事件中首先利用Request对象的UserHostAddress属性获取客户端IP地址,然后将IP保存到Cookie中。代码如下:
protected void
btnWrite_Click(object sender, EventArgs e)
{
string UserIP =
Request.UserHostAddress.ToString();
Response.Cookies["IP"].Value
= UserIP;
}
单击【将用户IP从Cookie中读出】按钮,从Cookie中读出写入的IP,代码如下:
protected void
btnRead_Click(object sender, EventArgs e)
{
this.Label1.Text =
Request.Cookies["IP"].Value;
}
由于Cookie对象可以保存和读取客户端的信息,用户可以通过它对登录的客户进行标识,防止用户恶意攻击网站。如:在线投票中,可以使用Cookie,防止用户进行重复投票。
为了避免用户信息被他人窃取,增强网站的安全性,通常需要对Cookie中的数据进行加密。加密代码如下:
string data="对Cookie中的数据加密。";
Response.Cookies["data"].Value=Forms.Authentication.HashPasswordForStoringInConfigFile(data,"md5");
使用Response对象可以创建多个数据值的Cookie,其语法格式如下:
Response.Cookies["CookieName"]["KeyName"]="Cookie中相对索引键的数据值";
例如,使用Response对象的Cookie集合保存用户登录名和密码,其代码如下:
Response.Cookies["UserInfo"]["UserName"] = this.txtName.Text.Trim();
Response.Cookies["UserInfo"]["UserPwd"] = this.txtPassword.Text.Trim();
虽然Cookie对象变量是存放在客户端计算机上,但是也不是永远不会消失。设计人员可以在程序中设定Cookie对象的有效日期,使用语法为:
Response.Cookies["CookieName"].Expires
= 日期;
如果没有指定Expires属性,Cookie变量将不会被保存,当关闭浏览器时,Cookie变量也会随之消失。
¨ 下面的程序片段演示了几种设定有效期的方法:
//20分钟后到期
TimeSpan ts = new TimeSpan(0, 0, 20, 0);
Response.Cookies["myCookie"].Expires = DateTime.Now.Add(ts);
//一个月后到期
Response.Cookies["myCookie"].Expires = DateTime.Now.AddMonths(1);
//指定有效日期
Response.Cookies["myCookie"].Expires = DateTime.Parse("10/26/2007");
//永远不过期
Response.Cookies["myCookie"].Expires = DateTime.MaxValue;
//关闭浏览器后过期
Response.Cookies["myCookie"].Expires = DateTime.MinValue;