- - PR -
1度ブラウザを閉じないと更新されたCookie値が読み込めない?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-05 17:41
ASP、ASP.netで開発しています。
ASP.net画面(showModalDialogで開いたポップアップ画面)からJavaScriptでCookieを更新し、ASP.net画面を閉じて親画面(ASP画面)に戻ります。 再びASP.net画面を開いた際に、更新後のCookieを読み込んでいるのですが、更新前のCookie値を取得してしまいます。 Cookieファイル(C:\\Documents and Settings\\AAA\\Cookiesフォルダ下)には正しく更新されています。 親画面のブラウザを閉じて、再び同様の操作を行った場合は更新後のCookie値を取得できます。 親画面のブラウザを閉じずに、ASP.net画面(showModalDialogで開いたポップアップ画面)で更新したCookie値を再び取得することはできないのでしょうか? ちなみに、ASP.net画面(showModalDialogで開いたポップアップ画面)で読み込む際にHttpCookieで読み込み、更新する際にはJavaScriptのdocument.Cookieを使用しています。 | ||||
|
投稿日時: 2006-08-06 02:59
うちではaspは動かないんで親画面をhtmlにしていますが、更新後の値がとれています。
デバッグ(ステップ実行)したら、取得しているところのコードで、古い値が入っていますか? showModalDialogを使わないでASP.net画面単独で試したら正常に取得できるんですか? Cookieを更新したあとリロードするとか。(Loadでとってるのかわからないけど) | ||||
|
投稿日時: 2006-08-07 10:44
Dim GetCookie001 As HttpCookie
'Cookie読込み GetCookie001 = Me.Request.Cookies("RefugeSettings001") 'Cookieを取得した場合 If Not SetCookie Is Nothing Then AAA= Me.Server.HtmlEncode(GetCookie001("PartyData").ToString.Trim) BBB= Me.Server.HtmlEncode(GetCookie001("Category1Data").ToString.Trim) CCC = Me.Server.HtmlEncode(GetCookie001("Category2Data").ToString.Trim) DDD = Me.Server.HtmlEncode(GetCookie001("Category3Data").ToString.Trim) 読み込む際のコードは上記のように書きました。 デバッグでは、やっぱり更新前の値が取れています。 >showModalDialogを使わないでASP.net画面単独で試したら正常に取得できるんですか? 取得できます。 >Cookieを更新したあとリロードするとか。(Loadでとってるのかわからないけど) リロードしてもだめでした。 LoadではResponseを読み込み直してはいないです。 showModalDialogではなく普通にwindow.openでは正しく読み込んでくるので、それはよいのですが、なぜ私がshowModalDialogにしているかというと、ダイアログ画面が閉じるまでは常に最前面にそのダイアログ画面を表示しておきたいからです。 window.openでは親画面(背画面)をクリックするとダイアログ画面が後ろに隠れてしまいます。window.openで常に最前面に表示させる場合は、<Body>タグにonBlur=focus()で実現できますが、それではダイアログ画面のコンボボックスやテキストボックスの変更作業ができなくなってしまいます。(例えば、テキストにカーソルを当てると、すぐフォーカスが移動してしまうから) window.openでも常に最前面表示、かつダイアログ画面のコントロール変更作業ができるようにする方法があれば、教えて頂きたいです。 それかshowModalDialogで、親画面のブラウザを閉じなくても更新後のCookie値を取得する方法を教えて頂きたいです。 無理なのでしょうか。。。? | ||||
|
投稿日時: 2006-08-07 13:39
今やってみたら再現しました。おそらくキャッシュですね。
ASP.net画面側でキャッシュを無効にするようにしてみてください。 (昨日私が試したときにはどこかにキャッシュを無効にするコードがまぎれてたのかもしれません) でも、だとするとポップアップ画面を閉じて再度開いた場合にはブレークポイントで 止まらないはずなんですけどね。(当環境では止まらなかった) Page_Load で DateTime.Now.ToLongTimeString() をラベルかなんかに表示しとくとキャッシュが 効いているかどうかわかりやすいです。
| ||||
|
投稿日時: 2006-08-07 14:55
べるさん、ありがとうございましたm(_ _)m
無事解決しました。 試しにIEの[ツール]メニュー→[インタネットオプション]→[全般]タブの「設定」ボタン押下→「ページを表示する毎に確認する」にチェックしてアプリを動作したところちゃんとページを表示するたびに最新のCookie情報を読み込んでくれました。 原因は、 べるさんのおっしゃる通りキャッシュを読み込んでいたからです。 解決方法としましては、 プログラムのPage_Loadで「Response.Cache.SetCacheability(HttpCacheability.NoCache)」と記述して、キャッシュを無効にすることで対応しました。 では、最後にもう一度感謝の念を込めて、 本当にありがとうございましたm(_ _)m |
1