昨天使用了cookie存用户IP分区信息,之前也一直使用没问题。
但是上线后一直很诡异,不是网站多域名问题,后面发现是存储数据有中文,哎,这个又忘了编码。
HttpCookie authCookie = Request.Cookies["ipAddress"];
if (authCookie == null)
{
XXXDAL.Instance.GetCountryByIP(Util.GetIP(), out partition, out city);
HttpCookie aCookie = new HttpCookie("ipAddress");
aCookie.Values["partition"] = partition.ToString();
aCookie.Values["city"] = HttpUtility.UrlEncode(city);
aCookie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Add(aCookie);
}
else
{
if(Request.Cookies["ipAddress"]["partition"]!=null&& int.TryParse(Request.Cookies["ipAddress"]["partition"].ToString(),out partition))
{
partition=int.Parse(Request.Cookies["ipAddress"]["partition"]);
}
if (Request.Cookies["ipAddress"]["city"] != null)
{
city = HttpUtility.UrlDecode(Request.Cookies["ipAddress"]["city"]);
}
限制cookie的域范围
Response.Cookies["domain"].Value = DateTime.Now.ToString();
Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1);
Response.Cookies["domain"].Domain = "support.contoso.com";
确定浏览器是否接受 Cookie
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Request.QueryString["AcceptsCookies"] == null) { Response.Cookies["TestCookie"].Value = "ok"; Response.Cookies["TestCookie"].Expires = DateTime.Now.AddMinutes(1); Response.Redirect("TestForCookies.aspx?redirect=" + Server.UrlEncode(Request.Url.ToString())); } else { Label1.Text = "Accept cookies = " + Server.UrlEncode( Request.QueryString["AcceptsCookies"]); } } }
参考:http://msdn.microsoft.com/zh-cn/library/ms178194(v=VS.80).aspx