2011-08-09 8 views
9

Tôi có đoạn mã sau vào phương pháp đăng nhập của tôi:C#/ASP.NET: không thể loại bỏ các tập tin cookie với sở hữu tên miền quy định

Response.Cookies["cookie"].Value = "..."; 
Response.Cookies["cookie"].Domain = "domain.com"; 

Bằng cách này, cookie được đưa vào lĩnh vực chính và tất cả các tên miền phụ

Tuy nhiên khi tôi cố gắng để loại bỏ các tập tin cookie:

Response.Cookies["cookie"].Expires = DateTime.Now.AddYears(-1); 

Nó không làm việc!

Khi tôi xóa 2 dòng mã mà thuộc tính Miền được chỉ định, nó hoạt động tốt.

Làm cách nào để giải quyết vấn đề này?

Cảm ơn

+0

Bất kỳ ai? Tôi đã đấu tranh với điều này cho mãi mãi ... – Alex

Trả lời

24

Được rồi, tôi figured mà ra.

Khi bạn loại bỏ một cookie với thiết lập sở hữu tên miền, bạn cần phải thiết lập thuộc tính rất giống nhau cho cookie giả mới:

if (Request.Cookies["cookie"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("cookie"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    myCookie.Domain = "domain.com"; // !!!! 
    Response.Cookies.Add(myCookie); 
} 
+1

Cảm ơn bạn đã chia sẻ câu trả lời của mình Alex. Nó giúp tôi giao phối – DotNetInfo

4

tôi nghi ngờ bạn đang thiết Expires trong khi Response là trên một tên miền phụ ...
crosscheck: Bạn có thể thử và đặt nó từ tên miền riêng của mình và xem nếu mà làm việc?

Theo http://msdn.microsoft.com/en-us/library/ms178195%28v=VS.100%29.aspx bạn có thể xóa cookie bằng cách:

if (Request.Cookies["cookie"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("cookie"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 
+0

Cảm ơn bạn đã trả lời. Tôi đặt cookie từ chính tên miền. Tôi đã thử một ví dụ rất giống nhau, và nó chỉ hoạt động trong Opera. – Alex

+0

Cảm ơn bạn đã cung cấp giải pháp phù hợp. –

0

được tìm kiếm xung quanh một chút và không thể làm cho nó làm việc. Tôi đã thực sự đặt thuộc tính giá trị để làm cho nó hoạt động! Sử dụng mvc 3 .net 4.

 var current = HttpContext.Current.Request.Cookies[key]; 
     if (current == null) return; 
     var myCookie = new HttpCookie(key) 
          { 
           Expires = DateTime.Now.AddYears(-1), 
           Value = current.Value, 
           Domain = domain 
          }; 
     HttpContext.Current.Response.Cookies.Set(myCookie);