2011-11-30 82 views
0

我正在研究一個MVC3應用程序,並且遇到無意中緩存對象的問題。 我的代碼是從調用創建對象到一個單獨的自定義業務邏輯DLL。 此業務邏輯DLL從數據庫中獲取數據。 在我更改數據庫中的數據後,即使在關閉瀏覽器並重新運行應用程序後,我仍然看到舊數據。這不是瀏覽器緩存問題,因爲我在開發環境中進行調試時可以看到它。不需要的ASP.Net MVC3服務器端緩存

在開發中,如果我停止了asp.net開發服務器,然後重新運行應用程序,我會得到新的數據。 在IIS中,如果我重新啓動網站,我會得到新的數據。

任何想法爲什麼asp.net緩存和重新使用這些對象,即使他們已經超出了範圍?

業務邏輯DLL確實有一些內置的緩存,所以也許這是主要問題。在這種情況下,我想問題是,是否有某種方法可以告訴asp.net在會話結束後清除對象。

回答

1

ASP.NET MVC3默認沒有緩存,至少沒有緩存數據。確保你的IIS設置是正確的,並且你不會意外地使用OutputCacheAttribute

至於業務層中的緩存:在過去兩天裏我看到至少有三個與緩存相關的問題。請記住:緩存很棘手,靜態變量也是如此。如果沒有必要,不要這樣做。緩存功能非常強大,但也很危險。對於前面提到的OutputCacheAttribute也是如此。

0

這聽起來像你正在靜態地創建你的數據上下文,而不是創建一個新的並在請求後摧毀它。由於很多原因,這是一件壞事。

當你說業務層有「緩存」時,這是什麼意思?你如何緩存?