0

ユーザーからのリクエストを受け取り、SQLServerのデータをRS2005経由でExcelにエクスポートするac#Webアプリがあります。コードは次のようになります。

ReportExecution2005.ReportExecutionService rsExec = new ReportExecution2005.ReportExecutionService();

// set all params here...

rsExec.Timeout = 1800000;  //30 mins

s.Start(); // stopwatch start
result = rsExec.Render(format, null, out extension, out encoding, out mimeType, out warnings, out streamIDs);
s.Stop();// stopwatch stop

問題は、リクエストに2分以上かかる場合(シミュレートするために、ストアドプロシージャに「待機遅延 '00:04:00'」がある)、.Render()メソッドが2分後にデータなしで戻ることです。ストアドプロシージャの遅延を削除するとデータが返されるため、渡したパラメータには有効なデータがあります。しかし、遅延を追加すると、Render()メソッドはデータなしで戻ります。ストアドプロシージャの遅延後にデータ全体を取得することを期待しています。

これはReportingServicesに関連しているとは思いません。同じデータでサブスクリプションを作成すると、レポートが必要な限り実行され、データが返されるため、同じレポートが正常に機能するからです。タイムアウト例外をスローしていません。通常は約2分4秒で動作を停止し、データは返されません。誰かがこれについて何か考えを持っていますか?

前もって感謝します。

ベン

4

1 に答える 1

0

私の問題を見つけました。RS.Render() が、それ自体に関連付けられた複数のタイムアウトを持つ Web サービスを呼び出していたことが判明しました。サービス呼び出しからタイムアウトがスローされたために返されましたが、例外を渡す方法がわからないため、データは返されず、例外もありませんでした。

于 2012-06-08T19:13:31.647 に答える