2009-07-22 73 views
0

断続的な "System.Web.HttpException:Request timed out"が表示されます。ページが最初に(上記のコードが実行される前によく)の実行を開始するときResponse.BufferOutput = falseをが設定されていることを"System.Web.HttpException:要求がタイムアウトしました。" Response.writeのエラー

sMessage = "Searching...0% complete."<br> 
sSetVal = "&lt;script>document.getElementById('MessageDiv').innerHTML='" & sMessage & "';&lt;/script>"<br> 
Response.write(sSetVal) 

注:私のコードは、ラインのResponse.Writeを()ヒットエラー。

コードは、他のスレッドが長時間実行処理を実行しながら、進捗メッセージを更新するために使用されます。 1つのスレッドは連続的に実行され、他のスレッドの状態をチェックします。他のスレッドが終了すると、このスレッドは更新されたステータスメッセージをエンドユーザに出力します。私はこれがajaxを使ってコード化されるべきであることを認識していますが、これは従来のアプリケーションであり、現時点では選択肢ではありません。

このコードは、10,000回の日を実行し、エラーは約5回発生している - 私は、ウェブサイトが忙しくなったときの応答オブジェクトが他のスレッドによってブロックされている疑いがあります。ただし、パフォーマンスモニタでどのパフォーマンスカウンタをチェックするかわかりません。または、この問題は他の何かによって引き起こされますか?私はIIS 6、asp.net v2とvb.netを使用しています

+0

例外をキャッチして、ex.ToStringを()掲載することにより、すべてのInnerExceptionを含む完全な例外を投稿してください。 –

+0

クイック返信をありがとう。 今まで、私は使用している:のApplication_Errorサブで Server.GetLastError().ToString() を。 このエラーの出力は
System.Web.HttpException: Request timed out. です。他のすべてのエラーは、完全なコールスタックを持ちますが、このエラーはありません。エラー報告に.InnerExceptionを追加しました。報告されるその他の情報が表示されます。 私は現在の場所をセッションオブジェクトにダンプしていますが、エラーが発生したときにチェックしています。これは、完全な呼び出しスタックなしでresponse.writeに失敗していることを私が知っている方法です。 –

+0

OK - エラーが再度発生しました。内部の例外は空白です。唯一のエラーメッセージは "System.Web.HttpException:Request timed out"です。 Server.GetLastError()。ToString()から取得します。 –

答えて

0

Response.Writeの前にResponse.BufferOutput = falseを移動しようとしましたか?

私は、メモリ使用量とGC2コレクションのパフォーマンスカウンタを監視しようとするだろう。

+0

なステートメントResponse.BufferOutput = falseのだけ値の状態が何であったかを示すことであった - それは、右の実行の開始時に設定されています。 Response.BufferOutput = trueを試してみましたが、次にResponse.Flush()文でタイムアウトしました。 –

+0

は、コード例の先頭に移動することをお勧めします。 –

+0

OK、私はResponse.BufferOutput = falseを移動してより明確にしました。 –

関連する問題