2012-03-14 17 views
3

私はこれで数時間過ごしましたが、これは非常識です。asp.netのCookieに関する問題。 response.redirectの後に戻ってくる値

は、私が「ますsetcookie」機能が含まれているページの基本クラスを持っており、これは基本的にはこれです:

 Dim context As HttpContext = System.Web.HttpContext.Current 

     If context.Request.Cookies(cookieName) Is Nothing Then 
      Dim cookie As HttpCookie 
      cookie.Value = cookieValue 
      cookie.Expires = DateTime.Now.AddDays(7) 
      context.Response.Cookies.Add(cookie) 
     Else 
      Dim cookie As HttpCookie = context.Request.Cookies(cookieName) 
      cookie.Expires = DateTime.Now.AddDays(7) 
      cookie.Value = cookieValue 
     End If 

この関数は、単純なaspxページによって呼び出されます。これはテスト環境にあるので、使用しているクッキーには以前の値 "123"があります。私は、デバッグとウォッチウィンドウを使用する場合、私は "168"に正常に値の変更を参照してください。

私はライン上でデバッグブレークポイントを持っている:

  Response.Redirect("overview.aspx", False) 

ブレークポイントがアクティブになると、ウォッチウィンドウ内の値は以下のとおりです。

currProjectID 168 Integer 
    HttpContext.Current.Request.Cookies("currProjectID").Value "168" String 

(currProjectIDが財産であります

ここで、2番目の変数は、変数の値を "F10"にして上のブレークポイントラインを外します。

これは非常識です!コードはどこにも行きません。デバッグポイントは上記の "response.redirect"の直下にありますが、値は直前の値にすぐに変わります!何も "setcookie"ルーチンの近くに行っていないので、誰かが私の狂気を救い、何がうまくいかないか教えてください!

+0

私はそれを持って遊び続けています。まだ喜んではいません:-(即時ウォッチウィンドウには、 "response.redirect"行を踏み越えるまで正しい更新値が表示されます。この時点で、即座に初期値に戻り、 "setcookie"関数を経由しません。 – TheMook

+0

SQL Serverのセッションベースの変数に戻します – TheMook

答えて

3

あなたがする必要があります: - 更新クッキー - - 要求 からクッキーを取得し、あなたが応答でクッキーを送っていけない場合は、応答

にクッキーを送信すると、ブラウザは、変更について何も知らないでしょう! クッキーはそれ自身を更新するために巧妙ではありません。

希望します。

UPDATE

var cookieDetails = Request.Cookies["yourCookie"]; 
if (cookieDetails != null) 
{ 
    cookieDetails.Values["someValue"] = valueToAssign; 
} 
else 
{ 
    cookieDetails = new HttpCookie("yourCookie"); 
    cookieDetails.Values.Add("someValue", valueToAssign); 
} 
Response.Cookies.Add(cookieDetails); 

この例では、クッキーを設定します。あなたが見ることができるように、最初のビットはクッキーが存在するかどうかをチェックし、2番目のビットは新しいクッキーを作成するだけです。

あなたは

Response.Cookies.Add(cookieDetails); 

ブラウザにクッキーを送信し、最後のビットが欠落しているが、それがお役に立てば幸いです。

+0

はい、前述のように、この方法でクッキー値を正確に取得することができますし、OPでも同じことが行われています。 – Pankaj

+0

私は理解できません、ごめんなさい...私の関数のコードのこのビットはまったく同じですね。 Dim cookie As HttpCookie = context.Request.Cookies(cookieName) クッキー。Expires = DateTime.Now.AddDays(7) cookie.Value = cookieValue – TheMook

+0

申し訳ありませんが、私は私の答えでより具体的であったはずです。 2番目にそれを更新し、例を含むでしょう。 –

関連する問題