Ich versuche, die meisten Funktionen des OutputCache-Aktionsfilters in MVC 4 wiederherzustellen, indem ich die Ergebnisobjekte selbst zwischenspeichern. Der Grund, warum ich den OutputCache-Aktionsfilter nicht verwenden möchte, ist, dass ich ihn nicht mit AppFabric und Teilansichten verwenden kann. Teilansichten werden immer in MemoryCache gespeichert und ich möchte, dass die zwischengespeicherten Objekte in einer Serverfarm verwendet werden.Caching von MVC-Ansichten in AppFabric manuell
Das erste Problem, das ich habe, ist
{"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."}
Das macht mich frage mich, ob ich etwas anderes zwischenspeichern soll zurückkehren, was am Ende im Wesentlichen die Aussicht ist. Hat jemand eine Vorstellung davon, was ich zwischenspeichern sollte, um die Ansicht neu zu erstellen, oder einen anderen Ansatz zum Zwischenspeichern von Teilansichten über eine Serverfarm? Ich möchte dafür keine Plugins von Drittanbietern verwenden.
Dank
Update: Ich begann die Darstellung der Teilansicht String Cachen wie folgt:
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();
}
Das es einfach nur rufen Sie die Zeichenfolge im Cache aus und senden es als Inhalt in das gemacht hat Aktion. Ich bin immer noch auf der Suche nach anderen Vorschlägen oder einem besseren Weg, dies zu tun.