問題:Web超過20分鍾(默認時間)沒有訪問,無活動,Web進入休眠狀態
詳情:在Web系統中長時間持續、定時執行任務,如當前的RFID系統中的報文解析服務。Web系統部署在運行環境后,超過默認時間無訪問,Web系統會自動休眠,導致指定任務無法繼續執行。
測試運行環境:
- win8 系統x64專業版
- IIS8.0
- SQLServer 2008 R2 X64
Web基本信息:
- .NET MVC5
- EntityFramework.6.1.3
解決方案:
- 使用計划任務
- 使用Widows服務
- 使用IIS8.0的功能 Application Initialization
本次使用 解決方案第三點,參考官方文章:http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization
步驟:
- 為IIS添加Application Initialization的功能模塊
- 找到目錄C:\Windows\System32\inetsrv\config 打開applicationHost.config 配置文件
- 查找system.applicationHost / applicationPools / name=".NET v4.5"的Add節點
- 添加屬性 startMode="AlwaysRunning"
- 示例:<add name=".NET v4.5" startMode="AlwaysRunning" managedRuntimeVersion="v4.0" />
- 查找system.applicationHost / sites / 部署項目的 site / application
- 添加屬性 preloadEnabled="true"
- 示例:<application path="/" preloadEnabled="true" applicationPool=".NET v4.5">
- 打開Web項目的web.config文件
- 找到節點system.webServer
- 添加或修改配置信息
<applicationInitialization remapManagedRequestsTo="Startup.htm" skipManagedModules="true" >
<add initializationPage="/default.aspx" />
</applicationInitialization> - 示例:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="4080"></requestLimits>
</requestFiltering>
</security>
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />
</modules>
<urlCompression doDynamicCompression="false" />
<applicationInitialization
remapManagedRequestsTo="Startup.htm"
skipManagedModules="true" >
<add initializationPage="/default.aspx" />
</applicationInitialization>
</system.webServer>
- 結束,重啟IIS
net stop w3svc & net start w3svc
休眠 .NET MVC5項目
參照文章:http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization