在asp.net中使用cookie

发布时间:2020-12-08编辑:脚本学堂
在asp.net中使用cookie

除此之外,可以通过一个HttpCookieCollection对象访问cookies的完整列表。这就使得cookie列表可以用一个for循环来访问。
以下C#代码说明了这样的例子:
HttpCookieCollection cookies;
HttpCookie oneCookie;
cookies = Request.Cookies;
string[] cookieArray = cookies.AllKeys;
for (int i=0; I < cookieArray.Length; i++) {
oneCookie = cookies[cookieArray[i]];
Response.Write(oneCookie.Name + " - " + oneCookie.Value);
}

VB.NET中相应的代码如下:
Dim i As Integer
Dim oneCookie As HttpCookie
For i = 0 To Request.Cookies.Count - 1
oneCookie = Request.Cookies(i)
Response.Write(oneCookie.Name + " - " + oneCookie.Value)
Next I

稳定也是一个观点
cookie文件存放在客户端机器,所以你的用户可以任意删除或更改。此外,用户还可以使cookies无效化。基于此原因,请记住不要依赖cookie数据。你应该将重要的信息保存在服务器──特别是一个数据库中。

在一个cookie中存储关键信息被认为是一种低级的程序设计,因为这些信息很容易被泄露,原因是这些信息位于客户机器的一个文件中。在这一点,一种方法就是使用SSL,这是一种可以避免敏感信息的更好方法。

我可以使用cookies吗?
用户可以在自己的浏览器上无效化cookie支持。在自己的代码中访问这些设置以决定是否支持cookies。Request对象满足了这一想法,以下VB.NET代码显示了这一过程:
If Request.Browser.Cookies = True Then

' 使用cookies

Else

'没有cookie支持

End If

可以联合代码来使用cookie值。以下C#代码段对cookie支持进行了测试,并相应地将结果显示在一个文本框

if (Request.Browser.Cookies == true)

{if (Request.Cookies["LastVisited1"] == null){
HttpCookie newCookie = new HttpCookie("LastVisited1",DateTime.Now.ToString());
newCookie.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Add(newCookie);
this.txtName.Text = "Is this your first time?";
}
 else {this.txtName.Text = "We haven't seen you since " +
Request.Cookies["LastVisited1"].Value;}  }

你可以将这一代码段添加到ASP.NET页中的Page_Load事件。

保存数据的另一方式
ASP.NET提供了保存特定用户数据的多种方法。其中一个老方法就是 cookies。对于敏感数据,虽然cookies不是最好的方法,但它是诸如颜色参数选择、最后一次访问日期等亲和力选项(benign items)的最佳选择。