使用 Cookie 在 ASP .NET 接口之间重定向,而不带查询字符串

本文关键字:字符串 查询 重定向 之间 Cookie ASP NET 接口 使用 | 更新日期: 2023-09-27 18:32:29

>我有两个asp .net接口:

  1. app1.domain.com
  2. app2.domain.com

在两者的默认页面中,都有一个链接按钮,我们可以从中在它们之间切换。以前我们使用查询字符串来传递用户名和密码。但是现在我们想使用饼干。所以在链接按钮的点击事件中,我有这样的代码:

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

使用 Cookie 在 ASP .NET 接口之间重定向,而不带查询字符串

在我看来

,问题出在您的域上。

cookie.Domain = "domain";更改为cookie.Domain = ".domain.com";

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

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.Domain = ".domain.com";