System.Web.UI.Page oPageMy cookie未删除。我看了几篇文章,一切看起来都很棒,就在我单步浏览Visual Studio(或者只是在localhost下运行)时,点击按钮,我的cookie就停留了。
无论价值多少,我都在使用Visual Studio 2012和.Net 4.0。我正在使用默认IE(在Win7 / 64上使用所有最新更新的v9)在localhost上进行调试。
public static void LoginUser(String strEmail, int iId, int iKeepDays)
{
HttpCookie oCookie = new HttpCookie("myCookie");
// Set the cookie value.
oCookie.Secure = false;
oCookie["Id"] = iId.ToString();
oCookie["Email"] = strEmail;
oCookie.Expires = DateTime.Now.AddDays(iKeepDays);
// Add the cookie.
HttpContext.Current.Response.Cookies.Add(oCookie);
}
public static void LogoutUser(System.Web.UI.Page oPage)
{
// Get the cookie.
HttpCookie oCookie = new HttpCookie("myCookie");
oCookie = HttpContext.Current.Request.Cookies["myCookie"];
if (null != oCookie)
{
// Remove the cookie.
cCookies.RemoveCookie("myCookie");
// Go back to the home page.
if (oPage.IsCallback)
ASPxWebControl.RedirectOnCallback("/");
else
HttpContext.Current.Response.Redirect("/");
}
}
/// <summary>
/// This function will be used to remove cookies value
/// </summary>
/// <param name="key"></param>
public static void RemoveCookie(String key)
{
//get cookies value
HttpCookie oCookie = null;
if (null != HttpContext.Current.Request.Cookies[key])
{
oCookie = HttpContext.Current.Request.Cookies[key];
// You cannt directly delte cookie you should set its expiry date to earlier date
oCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(oCookie);
}
}
答案 0 :(得分:1)
现在答案似乎很明显,我正在写它并想出来,但我可以说答案并不容易,明显与否。
上面的代码在服务器上执行,但cookie的删除发生在客户端上。执行必须转移到客户端,然后返回到服务器,以便服务器识别cookie被删除。
我正在同一个退出调用中回读数据,只是在一个不同的函数中。由于接受的练习声明重置cookie,该函数将cookie写回。 cookie被删除然后又回来了。它甚至有一个新的文件名。 (我打开了隐藏的cookie文件夹。)
我的解决方案是将登录状态传递给其他函数。这解决了cookie部分。
答案 1 :(得分:0)
cCookies.RemoveCookie("myCookie");
行不会调用您的RemoveCookie
方法。该行应为RemoveCookie("myCookie");
。