2011-03-23 112 views
0

下面的代碼嘗試在用戶註銷系統後清除所有域的Cookie。出於某種原因,只有數組中的最後一個域被清除。爲什麼會發生?難道我做錯了什麼?清除多個Cookie

例如,如果我將數組大小更改爲4,然後將for循環更改爲僅更改爲3,那麼它只會將我從y.xcv.com中註銷。

作爲一個旁註,我有這個循環在不同的服務器上工作,它使用稍微不同的函數來清除cookie。

編輯:代碼根據以下建議更新。現在它在「作爲HttpCookie」系列上失敗。我需要包括一些圖書館嗎?

Dim aDomain(12) 
Dim ESidCookie, WIdCookie, EBidCookie, TSidAccessCookie, PSidAccessCookie, SSidCookie As HttpCookie 

aDomain(0) = ".x.com" 
aDomain(1) = "y.x.com" 
aDomain(2) = "y.x.com" 
aDomain(3) = "y.xcv.com" 
aDomain(4) = "x.com" 
aDomain(5) = "y.z.a.com" 
aDomain(6) = "y.z.a.com" 
aDomain(7) = "z.a.com" 
aDomain(8) = "" 
aDomain(9) = "y.x.com" 
aDomain(10) = "y.x.com" 
aDomain(11) = "y.x.com" 

for count = 0 to 11 
    strDomain = aDomain(count) 
    response.Write count & "/" & strDomain 

    ESidCookie = New HttpCookie("oneCookie") 
    ESidCookie.Domain = strDomain 
    ESidCookie.Path = "/" 
    ESidCookie = "" 
    ESidCookie.Expires = now() - 100 
    Response.Cookies.Add(ESidCookie) 

    WIdCookie = New HttpCookie("twoCookie") 
    WIdCookie.Domain = strDomain 
    WIdCookie.Path = "/" 
    WIdCookie = "" 
    WIdCookie.Expires = now() - 100 
    Response.Cookies.Add(WIdCookie) 

    EBidCookie = New HttpCookie("threeCookie") 
    EBidCookie.Domain = strDomain 
    EBidCookie.Path = "/" 
    EBidCookie = "" 
    EBidCookie.Expires = now() - 100 
    Response.Cookies.Add(EBidCookie) 

    TSidAccessCookie = New HttpCookie("fourCookie") 
    TSidAccessCookie.Path = "/" 
    TSidAccessCookie = "LoggedOut" 
    Response.Cookies.Add(TSidAccessCookie) 

    PSidAccessCookie = New HttpCookie("fiveCookie") 
    PSidAccessCookie.Domain = strDomain 
    PSidAccessCookie.Path = "/" 
    PSidAccessCookie = "" 
    PSidAccessCookie.Expires = now() - 100 
    Response.Cookies.Add(PSidAccessCookie) 

    SSidCookie = New HttpCookie("sixCookie") 
    SSidCookie.Domain = strDomain 
    SSidCookie.Path = "/" 
    SSidCookie = "" 
    SSidCookie.Expires = now() - 100 
    Response.Cookies.Add(SSidCookie) 
next 

任何幫助表示讚賞。謝謝!

回答

0

Response.Cookies集合被鍵入了cookie名稱,所以您只需在每次通過循環時更改同一個cookie的域。這就是最後一個勝利的原因。

您可以嘗試創建新的cookie對象,並將其添加到循環中的Response.Cookies集合中。

0

如果你想清除所有的cookies,你應該創建所有新的同名。這裏有一個基本的例子,應該讓你去:

Dim newCookie As HttpCookie 
For i As Integer = 0 To 10 
    ' creating a new cookie each time 
    newCookie = New HttpCookie(cookieNames(i)) 
    ' expire the cookie 
    newCookie.Expires = DateTime.Now.AddDays(-1) 
    ' storing the new cookie each time 
    Response.Cookies.Add(newCookie) 
Next 

它看起來不像你創建所有新的cookie,並正確地將它們添加到響應。