ASP.NET UpdatePanelのタイムアウト
-
03-07-2019 - |
質問
90秒以上かかる UpdatePanel
からリクエストを送信しています。このタイムアウトエラーが発生しています:
Microsoft JScriptランタイムエラー: Sys.WebForms.PageRequestManagerTimeoutException:サーバー要求 タイムアウトしました。
コールがタイムアウトするまでの時間を増やす方法があるかどうか、誰もが知っていますか?
解決
ScriptManagerにはプロパティがあります:
AsyncPostBackTimeout="300"
他のヒント
私の場合、ScriptManagerオブジェクトはマスターページファイルに作成され、コンテンツページファイルと共有されました。したがって、コンテンツページのScriptManager.AsyncPostBackTimeoutプロパティを変更するには、コンテンツページのaspx.csファイル内のオブジェクトにアクセスする必要がありました。
protected void Page_Load(object sender, EventArgs e)
{
. . .
ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
_scriptMan.AsyncPostBackTimeout = 36000;
}
これはトリックを行いました(基本的にすべてのタイムアウトを無視するだけです):
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
if (args.get_error() && args.get_error().name === 'Sys.WebForms.PageRequestManagerTimeoutException') {
args.set_errorHandled(true);
}
});
</script>
以下の手順に従ってください:
ステップ1: web.config で、 httpRuntime maxRequestLength =&quot; 1024000&quot;を設定します。 executionTimeout =&quot; 999999&quot;
ステップ2:WebページのScriptManagerに次の設定を追加します。 AsyncPostBackTimeout =&quot; 360000&quot;
これで問題が解決します。
これは、IISでASPスクリプトのタイムアウトを変更することで構成可能です。
Webサイトのプロパティ、仮想ディレクトリ、構成ボタン、[オプション]タブにあります。
またはServer.ScriptTimeoutプロパティを設定して設定します。
まあ、リクエストが完全に実行されない可能性を残して破棄したいだけならうまくいくと思います...
AsyncPostBackTimeOutプロパティをScriptManagerタグに追加して、デフォルトのタイムアウトを90秒からアプリケーションにとってより適切な値に変更します。
さらに、コールを受信するWebサービスを変更して、より速く移動するようにします。インターネット時間では90秒も無限になります。
直面している問題は、アプリケーションがSQLデータベースクエリでタイムアウトになったときです。出力を返すには、デフォルトよりも時間がかかります。そのため、ConnectionTimeoutプロパティを増やす必要があります。
いくつかの方法でそれを行うことができます:
-
接続文字列には、
ConnectionTimeout
プロパティがあります。これは、データベースの接続が開かれるまでコードが待機する最大秒数を決定するプロパティです。web.config
の接続文字列セクションで接続タイムアウトを設定できます。<connectionstrings> <add name="ConnectionString" connectionstring="Database=UKTST1;Server=BRESAWN;uid=" system.data.sqlclient="/><br mode=" hold=" /><br mode=" html="> <asp:ToolkitScriptManager runat=" server=" AsyncPostBackTimeOut=" 6000="><br mode="> </add> </connectionstrings>
-
.aspx
ページにAsyncPostBackTimeout =&quot; 6000&quot;
を挿入できます<asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000"> </asp:ToolkitScriptManager>
-
.csファイルのストアドプロシージャを呼び出す
SqlCommand
でタイムアウトを設定できます。command.CommandTimeout = 30*1000;
解決策があることを願っています!