我编写了以下代码,以使cookies
中的所有request
失效。但是随着它们的到期,我需要明确地为某些domain
设置cookies
属性。我想知道是否有更好的方法来做同样的事情......
protected void Page_Load(object sender, EventArgs e)
{
Session.Abandon();
HttpCookie cookie;
string cookieName;
int cookieCount = Request.Cookies.Count;
for (int i = 0; i < cookieCount; i++)
{
cookieName = Request.Cookies[i].Name;
cookie = new HttpCookie(cookieName);
cookie.Expires = DateTime.Now.AddDays(-1);
if (string.Compare(cookieName, "cookie1") == 0
|| string.Compare(cookieName, "cookie2") == 0
|| string.Compare(cookieName, "cookie3") == 0
|| string.Compare(cookieName, "cookie4") == 0)
{
cookie.Domain = ".mydomain.com";
}
Response.Cookies.Add(cookie);
}
Response.Redirect("my redirect link");
}
我是C#的新手,因此不确定是否还有其他更好的方法可以将domain
值设置为list
cookies
的{{1}}。我来自脚本编写背景,基本上来自tcl
,通常我可以简单地检查给定项目是否在列表中,或者不是:
if ($item in $list){
// Do something
}
类似于执行lsearch
。
无论如何,我不喜欢if
中的逻辑运算符的原因是因为将来我可能会在cookies
中有更多list
来执行相同的操作而我不会我想继续填充if
条件检查。
我可以像tcl
那样执行相同操作,例如拥有所有Cookie名称的list
,然后在for
循环检查cookie
中的list
名称{1}},但不确定它有多贵。
任何意见将不胜感激。
答案 0 :(得分:0)
您使用new HttpCookie
创建新Cookie。因此,不会复制现有Cookie的域。你最好更新现有的cookie。例如:Remove and delete all cookies of my ASP NET c-sharp application
从上面的网址复制以下代码:
foreach (string key in Request.Cookies.AllKeys)
{
HttpCookie c = Request.Cookies(key);
c.Expires = Now.AddMonths(-1);
Response.AppendCookie(c);
}
您可以通过将过期日期设置为过去的日期来使Cookie无效。