首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 逾時設定完整指南:IIS、Web.config、WebService 三層配置

     編輯:關於ASP.NET

ASP.NET 應用程式涉及多層逾時設定,層層疊加,任一層過短皆會導致長時間作業(大檔上傳、報表匯出、長時間 WebService 呼叫)中斷。以下系統整理三層關鍵設定。

1. IIS 層級:連線逾時

  • 路徑:IIS 管理員 → 網站 → 右鍵內容/進階設定 → 連線逾時
  • 預設:120 秒
  • 影響:用戶端與 IIS 之間的 TCP 連線閒置斷線時間。
  • 建議:長傳輸作業調整為 300~600 秒。

2. ASP.NET 執行階段:httpRuntime executionTimeout

Web.config:

<system.web>
    <!-- 
        maxRequestLength: 最大要求長度 (KB),預設 4096 (4MB)
        executionTimeout: 要求執行逾時 (秒),預設 110 秒
    -->
    <httpRuntime 
        maxRequestLength="102400" 
        executionTimeout="600" 
        requestValidationMode="2.0" />
</system.web>
  • executionTimeout:ASP.NET 處理要求的最長秒數,**必須大於 IIS 連線逾時**,否則 IIS 先斷線。
  • maxRequestLength:上傳檔案大小上限,單位 KB,範例設 100MB。
  • ASP.NET Core 對應 Kestrel.Limits.MaxRequestBodySize 與 IISIntegration 設定。

3. WebService / HttpClient 呼叫端:Proxy Timeout

同步呼叫 WebService(舊式 ASMX 或 WCF)或 HttpWebRequest/HttpClient 時,需設定用戶端逾時:

// 舊式 WebService Proxy
MyService svc = new MyService();
svc.Timeout = 300000; // 毫秒 = 300 秒

// HttpClient (現代)
var client = new HttpClient();
client.Timeout = TimeSpan.FromMinutes(5); // 預設 100 秒

4. 額外關鍵設定(常被遺漏)

完整範例:支援 100MB 檔案上傳、10 分鐘處理

<system.web>
    <httpRuntime maxRequestLength="102400" executionTimeout="600" />
    <pages asyncTimeout="00:10:00" /> <!-- 非同步頁面 10 分鐘 -->
</system.web>

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="104857600" /> <!-- 100MB Bytes -->
        </requestFiltering>
    </security>
</system.webServer>

排查清單:長請求仍中斷?

  1. IIS 連線逾時 ≥ httpRuntime executionTimeout ≥ WebService Timeout?
  2. maxRequestLength / maxAllowedContentLength 是否足夠?
  3. 前端瀏覽器/Proxy/CDN 是否有更短逾時(如 Nginx proxy_read_timeout 預設 60s)?
  4. 應用程式集區是否因記憶體限制/閒置回收?
  5. 資料庫指令逾時(SqlCommand.CommandTimeout 預設 30 秒)?

記住:**最短的那一層決定最終逾時**,由外而內、由客戶端到伺服器端逐層檢查。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
設定位置說明
scriptTimeoutServer.ScriptTimeout / Page.AsyncTimeout頁面執行逾時,預設 90 秒,長時間非同步作業需調整
sessionState timeoutWeb.config <sessionState timeout="20">Session 閒置逾時 (分鐘),非要求執行逾時
App Pool Idle TimeoutIIS 應用程式集區 → 進階設定 → 閒置逾時預設 20 分鐘無要求則回收進程,導致首次請求慢
requestLimits maxAllowedContentLengthWeb.config <security><requestFiltering>IIS 7+ 要求大小上限 (Bytes),預設 30MB,需大於 maxRequestLength