Asp.net

長時間 ASP.NET 操作的 IIS 請求超時

  • September 30, 2010

執行長時間操作時,我遇到來自 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 文件

“此超時僅適用於編譯元素中的調試屬性為 False。因此,如果調試屬性為 True,則不必將此屬性設置為較大的值,以避免在調試時關閉應用程序。 "

如果您已經這樣做了,但發現您的會話即將到期,請增加 ASP.NETHttpSessionState.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>

如果您的腳本需要幾分鐘才能執行並且有許多並髮使用者,那麼請考慮將頁面更改為Asynchronous Page。這將增加您的應用程序的可擴展性。

另一種選擇是,如果您對伺服器具有管理員訪問權限,則可以將此長時間執行的操作視為實現為計劃任務或 Windows 服務的候選者。

引用自:https://stackoverflow.com/questions/3829202