3

Cookie を利用して準ウィザードをサポートするアプリケーションがあります (つまり、相互にナビゲートされる一連のページであり、登録のために特定の順序で発生する必要があります)。

ページが読み込まれるとLogon.aspx(既定のページ)、ブラウザーの Cookie は正しく表示されます。

ここでは、Cookie は 1 つだけです。

1 つの Cookie があり、適切な値を持っています。これにより、次のページ (登録同意書) がページから読み込まれたことを認識Logon.aspxできます。ただし、そのページにアクセスすると、ブラウザーの Cookie は大きく異なります。

これで、同じクッキーが 2 つになりました。

これで、同じクッキーが 2 つになりました。

これは実際の問題を引き起こしているようには見えませんが、そうではないかどうかはわかりません. それでは、Cookie を設定するために使用しているコードをお見せしましょう (何か問題がある可能性があるため)。

if (!this.IsPostBack)
{
    Utility.HandleReferrer(Request, Response, "Logon.aspx");
    Response.Cookies["lastpage"].Value = "Enroll.aspx";
}

メソッドは次のようになりHandleReferrerます。

static public void HandleReferrer(HttpRequest request, HttpResponse response, string expectedReferrer)
{
    var cookie = request.Cookies["lastpage"];
    if (cookie != null && cookie.Value.ToLower().Contains(expectedReferrer.ToLower()))
    {
        return;
    }

    response.Redirect("Logon.aspx");
}

では、一体なぜこの Cookie を複製するのでしょうか? 2つ以上作成することはないようです。

4

2 に答える 2

2

次のいずれかを実行することをお勧めします。

まず、最新の情報を入手して、もう一度お試しください。

それでもその名前のCookieが2つ表示されている場合は、firebugやfiddlerを入手そのように確認してください。推測しなければならないのであれば、一見しただけで何かが間違っているか、結果の解釈に何か問題があると思います。おそらく、リクエストが処理される前後にどのCookieが存在していたかを垣間見ることができますか?

3番目のオプションは、独自の.netコードからCookieコレクションを発行することです。何かのようなもの:

foreach(HttpCookie cookie in request.Cookies) {
  Response.Write(String.Format("{0} = {1}", cookie.Name, cookie.Value));
}

何が起こるか見てみましょう。

于 2013-03-01T17:04:10.993 に答える