- PR -

[ASP.NET] Response.Redirect 後にボタンイベント発生?

投稿者投稿内容
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-12 17:40
引用:
そうなのです。私自身はまだ再現できず、現場も目撃できずにいます。「タイムアウト後のボタン押下で発生するらしい」というのは現場SEからの話です。

つまり、ボタン押下で発生しているらしい、けど、ボタンクリックイベントかどうかの
裏づけはとれていないということですね。

引用:
可能性としてはあるかもしれませんが、色々な場所でセッション変数が消えて(エラー箇所が異なるため)、ログイン情報のセッション変数だけが残るというのも考えにくいなぁ、と思ったものですから。

ログイン状態ってセッションのみで管理してます?例えば.NETに用意されているForm認証とかで
実装しているなら、そのタイムアウトとセッションのタイムアウトは別ですよ。

引用:
2重 Submit が走った場合に複数スレッドで動作したりするのか、そうすると先発 Submit でセッション変数を参照後に消した場合に、後発 Submit ではセッション変数が取れなかったりするのか、といった辺りについて、ご教授もしくは参考サイト等ご提示頂けましたら大変助かります。

場合によると思いますが、例えば
<asp:Button OnClientClick="submit();"
みたいな事をすると2重にsubmitしますよね。(理由は、
<input type="submit" onclick="submit();"
のようになって、submitボタンとしてのsubmitとjavascriptのsubmitが走るから)
この場合スレッドが同じかといえば、ちょっと試した結果、同じ場合も違う場合も
ありました(これってそんなに重要ですかね)。ただ、セッションは同じです。
非同期で処理が走るかといえば、走りません。
とりまー
会議室デビュー日: 2007/07/20
投稿数: 9
投稿日時: 2007-10-12 18:46
書き込みありがとうございます。
本日他の場所で別件担当していまして進展ありません。



●Jitta様:
なるほど、セッションIDもログに含めるようにしようと思います。



●べる様:
引用:

つまり、ボタン押下で発生しているらしい、けど、ボタンクリックイベントかどうかの
裏づけはとれていないということですね。


状況説明不十分ですみません。
エラーログを見ると、サーバサイドのボタンクリックイベント内のセッション変数を扱っている部分で発生してる事が分かっています。

あと、Form認証は利用しておりません。

引用:

この場合スレッドが同じかといえば、ちょっと試した結果、同じ場合も違う場合も
ありました(これってそんなに重要ですかね)。ただ、セッションは同じです。
非同期で処理が走るかといえば、走りません。


スレッドであるかどうかが重要か否かは、知識不足でよく判らないのですが、少なくとも同期で、同じセッションで2回処理が走るとすると、私が書きましたように、先発 Submit で参照後にセッション変数をクリアした場合、後発 Submit で Nothing で返ってくるという認識でよろしいですよね?
手元にVS.NETの環境がないのですが、また試してみたいと思います。

私の ToDo ばかりがたまっていきますが、色々示唆与えて頂けるので大変ありがたく思っております。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-12 22:45
引用:
状況説明不十分ですみません。
エラーログを見ると、サーバサイドのボタンクリックイベント内のセッション変数を扱っている部分で発生してる事が分かっています。

あ、最初の投稿に書いてありますね、私が理解不足でした。すると、不確かなのは、
そのリクエストにおいて、Response.Redirectを本当に通ったのか、ですかね。いずれにしても
本番環境でのロギング等の強化も必要ですし、テスト環境で再現できるといいですね。
そうすれば(セッションタイムアウト時間は設定で変えれるし)ステップ実行しれみればいいわけですから。

引用:
スレッドであるかどうかが重要か否かは、知識不足でよく判らないのですが、少なくとも同期で、同じセッションで2回処理が走るとすると、私が書きましたように、先発 Submit で参照後にセッション変数をクリアした場合、後発 Submit で Nothing で返ってくるという認識でよろしいですよね?

そういう状況が起こりうるとすればそうでしょうね。話は少々それますが、さっき私がボタンの書き方、
C#だと確かにPage_Loadが2回走るんですが、VBだと一回しか走らないんですよね。
深く調べてないですが、不思議でした。
とりまー
会議室デビュー日: 2007/07/20
投稿数: 9
投稿日時: 2007-10-18 11:07
ご報告遅くなってしまいましたが、原因究明できました。

状況は、やはり
 ・ログイン情報のセッション変数は残っている
 ・ログイン情報以外のセッション変数の取り出しに失敗している
という事でしたが、アプリケーションの不具合に起因することが明らかとなりましたので、アドバイス頂いた方々に深く感謝致しまして、本件はクローズとさせて頂きます。
色々と勉強になりました。

簡単に書きますと、
まず、「セッション変数マネージャクラス」を経由してセッション変数にアクセスしていました。この情報を記載しておらず申し訳ありませんでした。
そして、このクラスが、セッション変数名にログイン日時を付与する、という変な仕様になっていました。
ログイン情報を上書きするようなパスが仕様変更により発生し、その時にログイン日時が更新される為、それ以降、冒頭に書いた状況に陥っていた、というのが真相でした。

スキルアップ/キャリアアップ(JOB@IT)