2017-02-25 141 views
0

我有一個既有MVC控制器又有WebApi控制器的項目。我使用System.Web.HttpContext.Current.Cache來存儲一些靜態數據,因此不會從每個請求的數據庫中檢索它。它看起來像WebApi控制器沒有看到由MVC控制器緩存的數據。他們是否使用System.Web.HttpContext.Current.Cache的不同實例?ASP.NET:在MVC和WebApi控制器之間共享HttpContext.Current.Cache

謝謝, 伯特 - 揚

+0

爲了記錄,您不應該直接在MVC/Web API中引用靜態'System.Web.HttpContext.Current'實例。您應該只使用傳遞到控制器/過濾器中的包裝的「HttpContextBase」實例。不過,我不確定這是否能解決您的問題。 – NightOwl888

+0

謝謝。我運行了一些測試,這個緩存在WebApi和MVC控制器中可用,他們可以看到對方的緩存項目。我誤解了。感謝您指出包裝的HttpContextBase。出於興趣:引用靜態實例有什麼危險? –

+0

主要問題與您引用任何靜態方法 - 緊密耦合相同。例如,在單元測試中沒有辦法模擬靜態的'System.Web.HttpContext.Current'實例,但是你可以*模擬'HttpContextBase'。更不用說,MVC *可能會改變一些通過包裝器傳遞的值 - 如果你沒有引用它,你可能會在你的應用程序中引入微妙的錯誤。 – NightOwl888

回答

相關問題