protected void Page_Load(object sender,EventArgs e) { if (!IsPostBack) { if (Request.Browser.Cookies) { if (Request.QueryString["check"] == null) { HttpCookie cookie = new HttpCookie("testcookie"); Response.Cookies.Add(cookie); Response.Redirect("Default.aspx?check=1"); } else { HttpCookie cookie = Request.Cookies["testcookie"]; if(cookie==null) { Label1.Text = "enable cookies"; } } } else { Label1.Text = "cookies not supported:"; } } } protected void Button1_Click(object sender,EventArgs e) { HttpCookie cookie = new HttpCookie("userinfo"); cookie["name"] = TextBox1.Text; cookie["email"] = TextBox2.Text; //cookie.Expires = DateTime.Now.AddDays(30); Response.Cookies.Add(cookie); Response.Redirect("Default2.aspx"); }
它无法正常工作.
解决方法
请参阅以下链接.
http://forums.asp.net/t/1044823.aspx?How+to+check+cookies+enabled+in+a+web+browser+
唯一的检查方法是设置一个cookie然后重定向它,然后再次检查你是否能够访问它.所以尝试以上链接中提到的方法.
protected void Page_Load(object sender,EventArgs e) { if (this.IsCookieDisabled()) errorMsgLabel.Text = Resources.Resource.BrowserDontSupportCookies; } private bool IsCookieDisabled() { string currentUrl = Request.RawUrl; if (Request.QueryString["cookieCheck"] == null) { try { HttpCookie c = new HttpCookie("SupportCookies","true"); Response.Cookies.Add(c); if (currentUrl.IndexOf("?") > 0) currentUrl = currentUrl + "&cookieCheck=true"; else currentUrl = currentUrl + "?cookieCheck=true"; Response.Redirect(currentUrl); } catch(Exception ex) { return false; } } if (!Request.Browser.Cookies || Request.Cookies["SupportCookies"] == null) return true; return false; }