- 締切済み
ASP.NETで画面の初期化される(IsPostBackがFalseと
ASP.NETで画面の初期化される(IsPostBackがFalseとなる)事象について お世話になります。 ASP.NETで開発したWebシステム(以下、当システム)で、処理ボタンを押すと画面が初期化される 事象が発生しています。 (正確には、Page_LoadイベントでIsPostBackが何故かFalseとなり、初期化処理を通過してしまう事象です。) 通常は上記事象は発生しないのですが、Windows 2000だと発生頻度は高いようです。 原因がどうしても判明できず、ご質問させて頂きました。 ----- [動作環境] <クライアントPC> Windows 2000 Professional/XP Professional IE6.0 <サーバー> Windows Server 2003 IIS6.0 ASP.NET2.0 (.Net Framework 2.0) [開発環境] VS2005 VB ASP.NET Webアプリケーション ----- 事象について詳しく確認してみたところ、以下が判明しています。 (1)クライアントPCで、最初に別の社内システムのページを開き、その後お気に入りのリンクより 当システムを同一ブラウザウィンドウ内に開いた後、自動的に別ウインドウ(IEのアドレスバーや メニュー無しの状態)で開かれた後、処理ボタンを押すと画面が初期化される事象が発生する。 (発生しないときもある) 最初から当システムのページを開き、自動的に別ウインドウで開かれた後、処理ボタンを押す操作 では今まで1度も事象が発生していない。 (別ウインドウで開く動作は、Javascriptのwindow.openで開いている) 社内システムと当システムは、同一サーバー(同一サイト)内で動作している。 (2)上記の社内システムでは、数分間隔で自動リロード処理が走り、ページがリロードされる仕様と なっている。 上記ページリロード後に、上記操作により事象が発生していた。 試しに社内システムのページを開き、IEの更新ボタンを押して手動で再読み込み後に、同様の操作 を行うと事象が発生した。 社内システムでリロード無しで、当システムのページを開いても事象は今まで発生していない。 (3)当システムでトレースログを出力し、事象発生時の動作を確認したところ、処理ボタン(サーバー コントロール)でのポストバック時に、Page_Loadイベントで何故か IsPostBack が False となり、 画面初期処理(初期化ロジック)を通過してしまっていることが判明。 (POSTメソッドで送信しており、必ず IsPostBack は True となるはず) (4)開発環境で、デバッグし動作確認しようとしたが、事象は発生しなかった。 上記(1)(2)については事象発生しないケースもあり、社内システムが直接関わっているかは断定できない状況です。 ただ社内システム以外のページを最初に開き、同様の操作を行っても事象は発生していません。 上記と同様の事例やその他何か考えられる事がございましたら、宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nmktksk
- ベストアンサー率36% (75/208)
(4)開発環境で、デバッグし動作確認しようとしたが、事象は発生しなかった。 IISの「接続のタイムアウト」以上の時間そのままにして再読み込みするとどうなりますか?
- todo36
- ベストアンサー率58% (728/1234)
> (POSTメソッドで送信しており、必ず は True となるはず) POSTでもASP.NETがポストバックと認識しなければ、IsPostBack = Trueとならない。 正常時と異常時でポスト変数に違いがあるか? CookieのSessionIDは途切れていないか?
お礼
ご回答ありがとうございます。 ポスト変数(HttpWebRequest)の情報は全て列挙してまで確認していませんが、 ページ上のTextBoxの値をRequest.Paramなどでトレース出力してみると、 正常時では当然取得できていましたが、異常時では取得できませんでした。 CookieのSessionID は確認できていません(Cookieは使用していない為)が、 おそらく期限切れか無効な状態になっているのでは? と考えられます。 ただ、開発環境ではセッションの接続タイムアウト時間を経過しても、 問題無く動作しました。 (当システム内でSession変数を使用して処理していないため) なぜPOSTされた値を取得できないのか、原因が分かりません。
- nmktksk
- ベストアンサー率36% (75/208)
別の社内システムでSessionの初期化処理等行われていませんでしょうか?
お礼
ご回答ありがとうございます。 すいません、別の社内システムの動作は確認できないのですが、 当システムではSession変数を使用していないため、 初期化処理が行われても問題無く動作可能と考えています。 (使用していなくてもSessionの初期化で何か影響がありますでしょうか?)
補足
先ほど確認したところ、 社内システムのリロードが無くても、頻度はかなり低いですが、 事象が発生しました。 また、window.openで別ウィンドウでの展開でなく、 社内システムと同一ウィンドウ内にそのままページ遷移して表示し、 操作しても、事象が発生しました。 何か考えられますでしょうか?
お礼
ご回答ありがとうございます。 開発環境でIISの「接続のタイムアウト」を1分に変更し、 1分以上放置して操作しても、事象は発生しませんでした。