我想通過自己緩存視圖結果對象來重新創建MVC 4中的OutputCache操作篩選器的大部分功能。我不想使用OutputCache操作過濾器的原因是因爲我不能將它與AppFabric和部分視圖一起使用;部分視圖總是存儲在MemoryCache中,我希望跨服務器場使用緩存對象。在AppFabric中手動緩存MVC視圖
的第一個問題我已經是
{"Type 'System.Web.Mvc.TempDataDictionary' cannot be serialized.
Consider marking it with the DataContractAttribute attribute, and marking all of
its members you want serialized with the DataMemberAttribute attribute.
If the type is a collection, consider marking it with the
CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for
other supported types."}
這使我懷疑我是否應該緩存別的東西返回的內容基本上是在年底的看法。有沒有人知道我應該緩存什麼,而是重新創建視圖或用於緩存服務器場上部分視圖的不同方法?我不想爲此使用第三方插件。
感謝
更新:我開始緩存局部視圖,像這樣的字符串表示:
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, "ViewName");
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
view = sw.GetStringBuilder().ToString();
}
這使得它很容易只是檢索緩存中的字符串,並返回其作爲內容行動。我仍在尋找其他建議或更好的方法來做到這一點。