IIS上有一個ASP.NET MVC網站和處理驗證功能的ASP.NET WebAPI。
網站執行的過程中會將部分資料存放到記憶體(例如驗證後取得的使用者資訊),無論是放到static property或是使用MemoryCache,過一段時間(大約30秒左右)後會發現資料消失了(session loss),查原因的過程中發現Application_Start()被重呼多次,因次得知網站被重啟所以導致保存在記憶體的資料消失了。
搜尋網站被重啟的原因,查到了這一篇文章
Reasons for ASP.NET application restarts on IIS server
在文章中看到這兩則說明和註解:
- Aach AppPool can issue one or multiple working processes depending on the AppPool settings (Maximum Workwer Processes [maxProcesses], default is 1)
It is not a good practice to use single AppPool for hosting multiple web applications. Despite isolation in AppDomains
案例中的ASP.NET MVC網站和ASP.NET WebAPI,都使用同一個AppPool,將這兩個應用程序改使用自己專用的AppPool後問題就解決了。