我有两个asp .net接口:
1. app1.domain.com
2. app2.domain.com
在两者的默认页面中,都有一个链接按钮,我们可以在它们之间切换。以前我们使用查询字符串来传递用户名和密码。但现在我们想要使用cookies。 所以在链接按钮的点击事件中,我有这样的代码:
HttpCookie cookie = new HttpCookie("MYCookie", Guid.NewGuid().ToString());
cookie.Domain = "domain.com";
cookie.Expires = DateTime.UtcNow.AddHours(1);
cookie.HttpOnly = false;
cookie.Secure = true;
cookie.Values.Add("Username", Username.ToString());
cookie.Values.Add("UserId", UserId.ToString());
Response.Cookies.Add(cookie);
Response.Redirect(destinationAddress);
现在,在其他应用程序的默认页面中,我正在读取cookie:
protected override void InitializeCulture() {
if (Request.Cookies["MYCookie"] != null) {
HttpCookie cookie = null;
cookie = Request.Cookies.Get("MYCookie");
}
}
但是我发现Request.Cookies [“MYCookie”]为null。我错过了什么吗?请指教。
答案 0 :(得分:0)
在我看来问题就是你的域名。
将cookie.Domain = "domain";
更改为cookie.Domain = ".domain.com";
答案 1 :(得分:0)
我认为您需要为app1和app2添加HttpCookie相同的Path属性
答案 2 :(得分:0)
Response.Redirect生成 ThreadAbortException 。 您Cookie中的所有更改都将丢失。所以你可以使用,
<meta http-equiv="Refresh" content="10; URL=your url" />
c#code:
System.Web.UI.HtmlControls.HtmlMeta meta = new System.Web.UI.HtmlControls.HtmlMeta();
meta.HttpEquiv = "Refresh";
meta.Content = "10; URL=your url";
Page.Header.Controls.Add(meta);
并将Cookie设置为
cookie.Domain = ".domain.com";