2012-08-02 58 views
2

我在應用程序狀態下爲我的ASP.NET網站存儲了一些網站設置。我還初始化了Application_Start()方法中的狀態。特定用戶可以更改這些設置,但經過一段時間後,即使服務器一直在運行,設置也會恢復爲在Application_Start()方法中初始化的值。在ASP.NET網站中持久化應用程序狀態

任何想法爲什麼會發生這種情況?如果應用程序在特定時間段內沒有收到任何請求,它會關閉嗎?

在此先感謝。

回答

4

如果應用程序在特定時間段內沒有收到任何請求 ,應用程序是否會關閉?

是的,默認情況下,應用程序池將在一段時間不活動後關閉。有關更多信息,請參閱Common reasons why your application pool may unexpectedly recycle

如果您需要跨應用程序池回收事件保持狀態,則應該將您的狀態保存在數據庫或App_Data中。

2

應用程序狀態存儲在網絡服務器的內存中。由於應用程序池回收並因此應用程序變量數據消失,用戶所做的更改將丟失。

對web.config/global.asax的任何更改也會重新啓動應用程序。

如果您想保留用戶所做的更改,您可能需要將其存儲在持久性介質(數據庫)中,並在應用程序啓動時從此處加載它。

link爲您提供更多關於應用程序狀態

2

是的,閒置一段時間後,應用程序池將關閉。如果你需要一些變量來保持活躍,你應該考慮將它們放在web.config或數據庫中,這會更安全和更合乎邏輯。