web-dev-qa-db-ja.com

タイムアウト設定にもかかわらず、ReportViewerがタイムアウトする

Microsoft ReportViewerを公開するASP.NETアプリがあります(実際には、ReportViewerをホストする1つのWebフォームを備えたMVC3アプリ)。大きなレポートを実行すると、タイムアウトが発生してリクエストが停止し、レポートの代わりに空白のページが表示されます。ただし、次のタイムアウトパラメータはプログラムで設定されます。

Viewer.ServerReport.Timeout = Configuration.ReportViewerTimeout;
ScriptManager.AsyncPostBackTimeout = Configuration.ReportViewerAjaxTimeout;

それぞれの値は-1と0であり、ドキュメントによると、タイムアウトなしとして解釈されます。私も大きな値を試しましたが、違いはありませんでした。

レポートが読み込まれるのを約1分ほど待った後(「読み込み中」メッセージボックス)、空白のレポートが表示され、Firebugコンソールウィンドウに次のように表示されます。

中止

Sys.WebForms.PageRequestManagerTimeoutException:サーバー要求がタイムアウトしました。

[このエラーの中断] this._endPostBack(this._cr ... anagerTimeoutError()、sender、null);

また、これをweb.configに追加してみました。

<httpRuntime maxRequestLength="1024000" executionTimeout="999999" /> 

そして、IIS>私のサイト>詳細設定>接続制限]で「接続タイムアウト(秒)」を1200に設定しました。これはすべて違いはありませんでした。

誰かが私が欠けている可能性があるものを知っていますか?

18
Clafou

答えは次のとおりです。実際には何も欠けていません。

たまたま、ScriptManagerのタイムアウト値は(ReportViewerのタイムアウト値とは異なり)ViewStateに保持されず、コードはif (!PostBack)ブロック内で一度だけ設定していました。各リクエスト(ポストバックも含む)でScriptManagerのAsyncPostBackTimeoutプロパティを設定することで修正されました。別の方法は、Visual StudioWebFormデザイナーを使用して固定値に設定することです。

12
Clafou

スクリプトマネージャでAsyncPostBackTimeOut = ""値を設定します

   <asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeOut="56000" >
</asp:ScriptManager>

詳細については http://msdn.Microsoft.com/en-us/library/system.web.ui.scriptmanager.asyncpostbacktimeout.aspx

16
Mahesh

上記の構成設定を2つ追加することで、うまくいきました。

サイトのweb.configで、executionTimeout = "10800"を設定します。

 <httpRuntime maxRequestLength="2147483647" executionTimeout = "10800"/>

Site.MasterでAsyncPostBackTimeout = "56000"を設定します:

 <asp:ToolkitScriptManager ID="smMaster" runat="server" AsyncPostBackTimeout="56000" />
6
Jobrocol