1. ホーム
  2. asp.net

[解決済み] 長いASP.NET操作のIISリクエストタイムアウト

2023-01-08 07:39:19

質問

長い操作を実行すると、IIS からリクエスト タイムアウトが発生します。舞台裏では、私の ASP.NET アプリケーションがデータを処理していますが、処理されるレコードの数が多いため、操作に長い時間がかかっています。

しかし、IIS はセッションをタイムアウトさせていると思います。これは、IIS または ASP.NET セッションの問題でしょうか?

どのように解決するのですか?

ASP.NET スクリプトの実行時間を延長したい場合は、スクリプトを実行するための Server.ScriptTimeout の値を増やしてください。デフォルトは、.NET 1.x では 90 秒、.NET 2.0 以降では 110 秒です。

例えば

// Increase script timeout for current page to five minutes
Server.ScriptTimeout = 300;

この値は web.config ファイル内の httpRuntime という設定ファイルに記述します。

<!-- Increase script timeout to five minutes -->
<httpRuntime executionTimeout="300" 
  ... other configuration attributes ...
/>

<イグ

に従ってください。 MSDN ドキュメント :

<ブロッククオート

このタイムアウトは、コンパイル時のdebug属性がFalseの場合のみ適用されます。 が False の場合のみ適用されます。したがって、debug属性がTrueであれば、この属性を大きな値に設定する必要はありません。 デバッグ中のアプリケーションのシャットダウンを避けるために、この属性を大きな値に設定する必要はありません。 アプリケーションのシャットダウンを避けるためです。

すでに実行済みで、セッションが期限切れになることが判明している場合は ASP.NET HttpSessionState.Timeout の値を指定します。

例えば

// Increase session timeout to thirty minutes
Session.Timeout = 30;

この値は web.config ファイルの中で sessionState 設定要素で指定します。

<configuration>
  <system.web>
    <sessionState 
      mode="InProc"
      cookieless="true"
      timeout="30" />
  </system.web>
</configuration>

もしスクリプトの実行に数分かかり、同時使用者が多い場合は、ページを 非同期ページ . これにより、アプリケーションのスケーラビリティが向上します。

サーバーへの管理者アクセス権を持っている場合、もうひとつの選択肢は、この長時間稼働するオペレーションをスケジュールタスクまたはWindowsサービスとして実装する候補として検討することです。