- - PR -
ASP.NETの二重クリック防止について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-27 16:44
いえ、デフォルト環境なら90秒でアボート例外が発生するはずです。今のスリープは50秒になっていますが、それを100秒に延ばせば、アボートすると思います(デフォルトでは)。そういう作りで大丈夫ですか? _________________ | ||||||||
|
投稿日時: 2005-08-31 18:17
コメント遅くなりました。 手元の環境で100秒に設定してやってみましたが、アボートされませんでした。 実際にはWebForm2.aspxの画面が表示されました。 設定などはデフォルトのままで、何も変えていないつもりです。 大丈夫ですか?と言われますと、実は自信を持って答えることはできません。 今回の検証用のコードを書く際にThread.Sleep()を使っておりますが、 最終的にはThread.Sleep()の箇所はDBの更新処理のロジックに置き換わり、 Thread.Sleep()を使うことはありません。 MSDNのドキュメントを見ると、Thread.Sleep()メソッドは ”指定した時間の間現在のスレッドをブロックします。”とあるので、 これがIIS(.NET Frameworkかな?)にとって見れば、 一定時間レスポンスが返ってこないことによるタイムアウトの検出?で アボートを引き起こす、ということが予想されるのでしょうか。これも自信ありませんが。。。 | ||||||||
|
投稿日時: 2005-08-31 18:33
Thread.Sleep(5000);
これって、5秒のスリープの気がします。 環境無いので、記憶で書いてますけど。。 (違ったらすいません。。) で、以下はちょっと脱線ですけど。 タイムアウトって一言で言っても、 Server.ScriptTimeout(だったかな?失念)の設定値やら SQLの応答タイムアウトやら、 ネットワーク機器の設定内容とかが 原因になることがあるようですので、 今のうちにしっかり検証データを残すことをお勧めします〜。 | ||||||||
|
投稿日時: 2005-09-01 19:11
はい、これは5秒のスリープとなります。
なるほど、Thread.Sleep()に限らず、他にもタイムアウトを引き起こすものは色々ありますね。 検証は念入りに行っていきたいと思います。 ありがとうございました。 | ||||||||
|
投稿日時: 2005-09-01 21:23
> これって、5秒のスリープの気がします。
あ〜、突っ込まれた。。。5秒ですね。 > 手元の環境で100秒に設定してやってみましたが Debug モードになっていたら、変わるかもしれません。 デバッグ中にいちいち切れていたら、デバッグできませんからね。 # VS2005 のヘルプには、Debug モードでないときのみ機能する、と書いてあります。 Release モードにすることはもちろん、 web.config にも設定がありますから、 注意してリリースモードにして、検査してみてください。 > 最終的にはThread.Sleep()の箇所はDBの更新処理のロジックに置き換わり もちろんそうでしょう。 DB 更新処理にどれくらい時間がかかるか、わかりますか? それは調べておかなければならないですよね。 「こんな設定もあるんだ」程度に憶えておいてください。 不必要に不安にさせたなら、申し訳ありませんでした。 _________________ | ||||||||
|
投稿日時: 2005-09-02 11:06
> Debug モードになっていたら、変わるかもしれません。
コメントを参考にReleaseモードで確認してみました。 なるほど、90秒くらいでアボートされました。 具体的なDB更新処理のロジックはまだ実装していませんが、 何十秒もかかるような大量の処理を行うものではないので、今回は問題ないと思われます。 もちろん実装が始まったら、検証を念入りに行うつもりでいます。 最初の話題からそれてしまいましたが、自分が意識していなかったことでしたので 早い段階で気づくことができたのは良かったと思います。ありがとうございます。 | ||||||||
|
投稿日時: 2005-09-02 17:42
1点だけ。
Debugビルドの場合は用途がデバッグのため IISで設定した「ASPのスクリプトタイムアウト」(既定90秒)で タイムアウトしません。 _________________ ASP/ASP.NETだいすき。 ASP++ by Moo http://moo-asp.net/ 日記は ほぼ毎日更新中 http://d.hatena.ne.jp/aspx/ |