使用不带查询字符串的cookie在asp .net接口之间重定向

时间:2012-04-27 07:57:26

标签: c# asp.net cookies

我有两个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。我错过了什么吗?请指教。

3 个答案:

答案 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#c​​ode:

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";