0

2 つの asp .net インターフェイスがあります。

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

両方のデフォルト ページには、それらを切り替えることができるリンク ボタンがあります。以前は、クエリ文字列を使用してユーザー名とパスワードを渡していました。しかし、今は Cookie を使用したいと考えています。リンクボタンのクリックイベントでは、次のようなコードがあります。

    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 として見つけています。私は何か不足していますか?ご意見をお聞かせください。

4

3 に答える 3

0

問題はあなたのドメインにあるように私には見えます。

cookie.Domain = "domain";に変更cookie.Domain = ".domain.com";

于 2012-04-27T08:01:25.443 に答える
0

app1とapp2の両方にHttpCookieの同じPathプロパティを追加する必要があると思います

于 2012-04-27T08:01:42.857 に答える
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.Domain = ".domain.com";
于 2012-05-03T12:40:02.497 に答える