我有一個ASP.NET MVC 3應用程序與SQL Server 2005數據庫後端。它使用LINQ to SQL鏈接到數據庫。在某些情況下,數據庫將被應用程序更新,但有時仍會緩存不應獲取緩存的舊數據。ASP.NET MVC 3錯誤緩存輸出
例如,如果用戶填寫表單發佈BlogEntryComment
(我的一個LINQ to SQL類型),它將被添加到數據庫中。但是,新的BlogEntryComment
不會顯示在我的要求它的意見。另外,如果我刪除了BlogEntryComment
,它仍然顯示在視圖中。以下是我對此行爲的確定:
這不是由瀏覽器緩存引起的。我清除了緩存;在不同的瀏覽器和不同的計算機上同時嘗試;無濟於事。
這不會發生在「頂級」類型中,例如我的
BlogEntry
類型。它與BlogEntryComment
類型發生在我的「頂級」類型中有關係(對許多評論有一個BlogEntry
)。如果我重新啓動服務器,或嘗試在不同的服務器上,它似乎清除它所在的任何緩存,並且我不會得到錯誤的結果。
它最終會顯示更新的數據,但最終需要15分鐘才能顯示。
我曾嘗試每一種高速緩存選項,我已經能夠在Web.config中找到關閉:
...
<system.web>
...
<caching>
<outputCache enableOutputCache="false" enableFragmentCache="false">
</outputCache>
</caching>
<httpRuntime enableKernelOutputCache="false" />
</system.web>
<system.webServer>
...
<caching enabled="false">
</caching>
</system.webServer>
...
...但沒有運氣。有任何想法嗎?
您是如何獲取數據的?你沒有緩存你的l2s數據上下文嗎? – Nik
@Nik:對於整個應用程序,我有一個DataContext的單例實例(一個類的靜態成員)。所有控制器都轉到這一個DataContext中獲取數據。 – walterbing1