- - PR -
IISで実行時にASP.NETでクッキーの値がnullになる
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-01-28 15:06
現在ASP.NETで開発を行っていて、下記の現象が発生しています。
A.aspx.csでクッキーに値をセットし、 B.aspx.csでその値を取得しようとすると、 内容がnullになっており、例外が発生してしまいます。 A.aspx.cs Response.Cookies["USER_ID"].Value = "0000"; Response.Cookies["USER_NM"].Value = "テストユーザ"; B.aspx.cs lblUser.Text = Request.Cookies["USER_NM"].Value; 上のコードの処理があり、 Response.Redirect("B.aspx"); で遷移してから、クッキーを参照しています。 VisualStudio2005上で、実行させているときは 特に問題なく動いていたのですが、 IIS上にファイルを置いて実行すると、クッキーの値が取れなくなりました。 何台かのサーバをセットアップして試したのですが、 サーバによって、クッキーの取得で例外が起きるタイミングが違います。 しばらくは値が取得できて動作する場合もあれば、 画面遷移を一度した時点で例外が発生する場合もあります。 ブラウザのクッキーを受け入れる設定は行っています。 テスト環境ですが、サーバが Windows 2003 Server SP2 IIS6.0 クライアントが Windows XP SP2 IE6 または IE7 です。 このような現象が起きる原因や、対策法など 心当たりがありましたら教えていただきたく思います。 よろしくお願い致します。 | ||||
|
投稿日時: 2008-01-28 16:29
ホスト名に"_"(アンダーバー)が入っているとIEはクッキーを受け付けないようです。
アンダーバーを使ってますか?
ということから、違う原因のような気がしますけど、一応参考になればと。 | ||||
|
投稿日時: 2008-01-28 16:44
どういったタイミングでその遷移をしているのでしょうか?ブラウザーが cookie を食う前に遷移しているということはないでしょうか? A.aspx と B.aspx の間にもうワンクッションなにか存在しているのでしょうか? それとも A.aspx の中で Response.Redirect("B.aspx"); をやられているのでしょうか?それはちょっと変な気がします?いいのかな? また、ブラウザーが cookie を食ったかどうかは、たとえば IE だったらアドレス欄に、 javascript:document.cookie; を入力すれば分かります。 | ||||
|
投稿日時: 2008-01-28 17:54
回答ありがとうございます。
おかげさまで解決できましたので、経緯を報告します。 >一郎さん ホスト名にアンダーバーは使っていなかったです。 ただ、この事は知らなかったので本番環境の構築で気をつけたいと思います。 >unibonさん A.aspxのボタンクリックイベントの処理で、 クッキーへの値のセットと、Response.Redirect("B.aspx")を実行しています。 教えていただいたように、javascript:document.cookie; で確認してみると、以下のようにブラウザはクッキーを食べているようです。 USER_ID=user02; USER_NM=5"em]~f]~|g~v00 ENTERPRISE_ID=0000000002; ただ気になったのが、USER_NMにセットした日本語が文字化けして 次のENTERPRISE_IDとの区切りの";"がなくなっていました。 これによって、ENTERPRISE_IDが参照できなくなっていると思い 名称を英文字のみに変えてみたところ、現象が発生しないようになりました。 ですので、日本語を扱う部分を以下のようにして対応しました。 [値をセットする処理] Response.Cookies["USER_NM"].Value = "テストユーザ"; ↓ Response.Cookies["USER_NM"].Value = Server.UrlEncode("テストユーザ"); [値を参照する処理] lblUser.Text = Request.Cookies["USER_NM"].Value; ↓ lblUser.Text = Server.UrlDecode(Request.Cookies["USER_NM"].Value); これで解決できたと思います。 ありがとうございました。 |
1