3direction

导航

Cookie的删除

最近在解决一个多语言的问题。 用到了cookie. 于是就想彻底了解一下cookie.没想到遇到了一个非常奇怪的问题,一直不得其解,就写这篇文章来这询问各位了。

环境:

vs2008和IE6

页面代码如下

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
    UICulture
="auto" Culture="auto" meta:resourcekey="PageResource1" 
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
<title>Untitled Page</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
    
</div>
    
<asp:Label ID="lblUserName" runat="server" meta:resourcekey="lblUserName" Text="Label"></asp:Label>
    
<%--<asp:Label ID="lblUserName" runat="server" Text="<%$ Resources:Default.aspx.zh-CN.resx,lblUserName%>"></asp:Label>--%>
    
<asp:Image ImageUrl="~/Images/213hws7.gif" ID="imgNew" runat="server" meta:resourcekey="imgNew" />
    
<asp:DropDownList ID="ddlMultiLanguage" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlMultiLanguage_SelectedIndexChanged">
        
<asp:ListItem Value="en-us" Text="Englist" Selected="True"></asp:ListItem>
        
<asp:ListItem Value="zh-cn" Text="简体中文"></asp:ListItem>
    
</asp:DropDownList>
    
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    
</form>
</body>
</html>

 

后台代码如下:

 

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : BasePage
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            
if (Request.Cookies["language_cookie"!= null && Request.Cookies["language_cookie"].Value != string.Empty)
            
{
                
string language_cookie = Request.Cookies["language_cookie"].Value.ToLower();
                
this.ddlMultiLanguage.SelectedValue = Request.Cookies["language_cookie"].Value.ToLower();
            }

            
else
            
{
                
this.ddlMultiLanguage.SelectedValue = Request.Headers["accept-language"].Split(",".ToCharArray())[0].ToString().ToLower();
            }

        }


    }


    
protected void ddlMultiLanguage_SelectedIndexChanged(object sender, EventArgs e)
    
{
        
if (Request.Cookies["language_cookie"!= null && Request.Cookies["language_cookie"].Value != string.Empty)
        
{
            Request.Cookies[
"language_cookie"].Value = this.ddlMultiLanguage.SelectedValue;
            Request.Cookies[
"language_cookie"].Expires = DateTime.Now.AddDays(10);
        }

        
else
        
{
            Response.Cookies[
"language_cookie"].Value = this.ddlMultiLanguage.SelectedValue;
            Response.Cookies[
"language_cookie"].Expires = DateTime.Now.AddDays(10);
        }


            String selectedLanguage 
= this.ddlMultiLanguage.SelectedValue;
            UICulture 
= selectedLanguage;
            Culture 
= selectedLanguage;

            System.Threading.Thread.CurrentThread.CurrentCulture 
= System.Globalization.CultureInfo.CreateSpecificCulture(selectedLanguage);
            System.Threading.Thread.CurrentThread.CurrentUICulture 
= new System.Globalization.CultureInfo(selectedLanguage);
 

    }


    
protected void Button1_Click(object sender, EventArgs e)
    
{
        
//Request.Cookies.Clear();
        
//Response.Cookies.Clear();
        
//Response.Cookies.Remove("language_cookie");
        
//Response.Cookies["language_cookie"].Expires = DateTime.Now.AddYears(-1000);
        Response.Cookies["language_cookie"].Expires = DateTime.Now.AddDays(-100);
        
    }


    
protected override void InitializeCulture()
    
{
        
base.InitializeCulture();
    }


}

 

问题:

我在Button1_Click事件中,设置了cookie的过期时间,这样浏览器就可以删除cookie. 我查看了一下下面两个文件夹

C:\Documents and Settings\user\Cookies

C:\Documents and Settings\user\Local Settings\Temporary Internet Files

里边的cookie确实不存在了。

但是,当我再次启动程序,发现在 Page_Load事件中的Request.Cookies["language_cookie"]竟然还存在的。我个人觉得在点击button触发Button1_Click事件后,cookie应该是不删除了,再次启动程序的时候Request.Cookies["language_cookie"]应该是不存在的。所以很疑惑。请各位指教。

多谢多谢!

补充:当我设置一个很大的值Response.Cookies["language_cookie"].Expires = DateTime.Now.AddYears(-1000); 效果就与推断的一样。Request.Cookies["language_cookie"]就真的不存在了。

 

posted on 2009-06-29 11:37  3direction  阅读(1433)  评论(0编辑  收藏  举报