在.NET的ASP.NET、ASP.NET MVC與WebService等應用中,常常使用Session、Cache或Application保存服務器端共享數據,如果沒有使用SqlServer保存這些緩衝區數據,那麼就存在超時與過期問題:超時後Session和Cache就過期清空了。
雖然可以在程序中配置或設置Session和Cache的超時時間,但還要需要注意一點的是,IIS也有一個與這些緩衝區超時過期密切相關的組件:應用程序池。該組件如下兩個參數與緩衝區超時回收有關(筆者是Windows10自帶的IIS6,應用程序池託管管道模式配置爲“集成”方式):
- “空閒超時(分鐘)”:默認是20分鐘。超過20分鐘後將執行下面的兩個操作之一。
- “空閒超時操作”:默認是“Terminate”(另一個選項是“Suspend”)。Terminate表示一旦超時就終止服務,並回收工作進程的緩衝區的內存;Suspend則懸停等待,暫不回收緩衝區內存。
總之,如果配置的超時時間大於20分鐘,就要設置IIS的應用程序池的“空閒超時”時間等於或大於服務器程序中超時。