0

1 つの Windows 2008 IIS サーバーに 2 つのサイトをセットアップしています。最初のサイトで、ユーザーが Web ページにアクセスすると、次の単純な C# コードを使用して Cookie が作成されます。

<%
    HttpCookie myCookie = new HttpCookie("MyTestCookie");
    myCookie.Value = "Hi";
    myCookie.Expires = DateTime.Now.AddMinutes(1);
    Response.Cookies.Add(myCookie);
>%

このサイトが実際に Cookie を「見る」ことができることを確認しました。次のコードを使用してその値を表示できます。

<% Response.Write(Request.Cookies["MyTestCookie"].Value); %>

まったく同じサーバーでホストされている他のサイト。次のコードを使用して、Cookie に値が割り当てられているかどうかを確認します。

if (Request.Cookies["MyTestCookie"] == null)
{
    lblErr.Text = "Cookie is null.";
}
else
{
    lblErr.Text = Request.Cookies["MyTestCookie"].Value;
}

ヌルです。しかし、ほんの数日前までは、null ではありませんでした。実際のサイトの完全なコードでは、少数のユーザーを除いてすべてのユーザーで機能していました。これらの特定のユーザーのトラブルシューティングを試みたところ、すべての人に対して機能しなくなりました。

何が間違っているのかわかりませんが、完全に独立していてお互いを認識していない 2 つのサイト間で値を渡す必要があります。同じサーバー上にある場合、ファーストパーティの Cookie は正常に機能すると思いました。私は何を間違っていますか?

4

3 に答える 3

2

Cookie は、元の URL に関連付けられています。ブラウザは、サイト A から受け取った Cookie をサイト B に送信しません (逆も同様です)。

編集

問題がユーザーに依存する場合は、ブラウザの Cookie 設定に関連している可能性があります。たとえば、一部のユーザーが Cookie をブロックしている場合などです。

于 2012-08-27T14:47:21.030 に答える
1

Pathプロパティを に設定し"/"て、サイトが同じドメイン名を共有していることを確認してください。

それらが異なるサブドメインにある場合は、Domainプロパティをdomainname.com(ドメイン名) に設定します。

編集:

コードは次のようになります。

if (Request.Cookies["MyTestCookie"] == null)
{
    HttpCookie myCookie = new HttpCookie("MyTestCookie");
    myCookie.Path = "/";
    myCookie.Domain = "domain.com";
    myCookie.Value = "Hi";
    myCookie.Expires = DateTime.Now.AddMinutes(1);
    Response.Cookies.Add(myCookie);

    lblErr.Text = "Cookie was null.";
}
else
{
    lblErr.Text = Request.Cookies["MyTestCookie"].Value;
}
于 2012-08-27T15:00:33.450 に答える
0

Cookie に設定した有効期限 (今から 1 分後) が少し短すぎます。将来の 6 か月に設定してみて、それが役立つかどうかを確認してください。

于 2012-08-27T20:24:21.293 に答える