- - PR -
長時間かかる処理で「ページが表示できません」
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-02-28 10:20
初めて投稿いたします。
ASP.NETでフォームにボタンを貼り付け、ある処理をさせます。 その処理がとても重く、60分以上かかります。 ボタンを押して60分後に「ページが表示できません。DSNエラー」となってしまいます。 ASP.NETの問題ではないと思っていますが、原因と回避策がわかりません。 関係しそうなIISの設定、Web.configの設定は片っ端から試しましたが全部ダメでした。 何かご存じの方がいらっしゃれば、情報を下さい。 よろしくお願いいたします。 環境:VS.NET2003 Windows2000Pro IIS5.0は自分のローカル(LAN上の別マシンにIISを立てても同じです) _________________ | ||||
|
投稿日時: 2004-02-28 10:30
単純にクライアントがタイムアウトしているのでは?
そもそも、60分以上かかるような処理をボタンを押して結果をまっているというのは、仕様的に見直せない部分でしょうか。そのような長い処理はWebアプリケーションに向いていませんし、ユーザーをそんなに長い時間待たすのもよくないでしょう。非同期処理にして、後で結果は結果専用ページで見るとか、そういうふうにしたほうがいいですよ。 | ||||
|
投稿日時: 2004-02-28 10:51
確かにWebアプリに向いていないのはわかっているのですが、
あまりWebアプリを理解していないユーザーでWindowsアプリのような要求ばかり してくるので仕方がないところなのです。 クライアントのタイムアウト時間をのばすことはできるのでしょうか? | ||||
|
投稿日時: 2004-02-28 12:07
クライアントのタイムアウト時間を伸ばすことは可能ですが、ブラウザによって設定が違いますし(IEはレジストリを変更)、サーバー側から設定することもできないのでお奨めできる方法ではありません。
ユーザーが1時間以上待っても全然かまわないというのであれば、過去にも同じような話題が出ていますので検索してチェックしてみてください。 とりあえず、自分が見つけたのは次のツリーです。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=7126 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4536&forum=7 | ||||
|
投稿日時: 2004-02-28 21:13
noderaさん、ありがとうございます。
限定されたユーザーだけが使用するので、レジストリの設定 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings ReceiveTimeout で行くことにしました。(全然インテリジェンスじゃありません) 今回の件で痛感しました。Webアプリはユーザーへの啓蒙が大切だと。 | ||||
|
投稿日時: 2004-02-28 22:24
とっても重要ですよね。出来ればそういうものだということを説明して分かってもらう方が望ましいんですけどね。 例えば、今度は別のサイトを表示したときにいつまでたってもタイムアウトしないから何とかしてくれって言われるかもしれない…そんなもんです… | ||||
|
投稿日時: 2004-02-29 17:14
私のところではサーバ側でスレッドを生成し、新しく生成したスレッド(計算スレッド)で計算を行っています。
計算スレッドの状態(どこまで進んだか、または終わったか)はセッション変数に格納します。 親スレッドは「お待ちください」画面へリプレースします。 お待ちください画面では、javascriptで定期的に画面のリロードを行います。 お待ちください画面のサーバサイドで、セッション変数を読み込み、終わっていれば結果ページへトランスファー、終わっていなければもう一度表示しています。 | ||||
|
投稿日時: 2004-03-02 10:10
Jittaさん、なちゃさん、noderaさん
色々貴重なご意見をありがとうございました。 Jittaさんのやり方が現実的でスマートなのかな(?) 今後の参考にさせていただきます。 |