在ASP.NET中使用Session、Cache與Application時注意IIS應用程序池的空閒超時

在.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的應用程序池的“空閒超時”時間等於或大於服務器程序中超時。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章