0

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

4

3 回答 3

0

Response.Redirect 生成ThreadAbortException。在您的 cookie 中所做的所有更改都将丢失。所以你可以使用,

<meta http-equiv="Refresh" content="10; URL=your url" />

c#代码:

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";
于 2012-05-03T12:40:02.497 回答
0

我认为您需要为 app1 和 app2 添加 HttpCookie 相同的 Path 属性

于 2012-04-27T08:01:42.857 回答
0

在我看来,问题出在您的域上。

改变cookie.Domain = "domain";cookie.Domain = ".domain.com";

于 2012-04-27T08:01:25.443 回答