So deaktivieren Sie server-side caching auf IIS 7.5 (asp-net mvc3)

Bin ich zu kämpfen mit meinem IIS setup in Bezug auf caching, hier eine kurze Beschreibung meines Problems:

Mache ich eine Website für mobile und nicht-mobile, teilen die gleichen Controller. IE: mysite/Seite dienen entweder mysite/Seite.cshtml oder mysite/M/Seite.cshtml, je nach Gerät.

Hier ist der Haken, es funktionierte mit meinem lokalen und integration-Umgebung (cassiini und iis 6), aber auf einer anderen Maschine (2008 R2/iis 7.5), anscheinend gibt es eine aggressive server-Seite - caching-Richtlinie:

  • Wenn ich auf die website von einem desktop-Rechner, ich habe die richtigen Seiten (desktop-version)
  • Wenn ich jetzt über mein Handy auf die Website zugreifen, ich habe die desktop-version, (was bedeutet, ein server-side-cache, mein Handy ist nicht mit im selben Netzwerk).

Im Gegenteil, wenn ich den server neu starten und Zugriff auf die Website mit meinem Handy zum ersten mal, dann werde ich die mobile version auf meinem desktop (nur für die Seiten habe ich bereits besucht, natürlich).

Versuchte ich 2 Lösungen so weit:

Deaktivieren OutputCache von meiner Web.config:

<httpModules>
  [..]
  <remove name="OutputCache" />
</httpModules>

Und deaktivieren Sie die Kontrollkästchen "Enable output cache" in "Ausgabe Zwischenspeichern" für meine Website in IIS.

Was mich nervt ist, dass ich nicht dieses problem mit meinem anderen server (iis 6.0), obwohl die Zwischenspeicherung aktiviert ist, führt mich zu glauben, es ist in Bezug auf iis 7-caching hinzu.

Meine Frage ist einfach: wie macht man deaktivieren, server-side caching auf IIS 7.5?

Vielen Dank im Voraus für Ihre iis-Lichter!

Es gefunden!

Sorry Leute, konnte man sich eigentlich nicht denke, dass ich verlängern RazorViewEngine (eigentlich habe ich eine Beispiel mobile mvc3-template-app), und diese Klasse überschreibt FindView, soll es zu berücksichtigen, eine useCache-parameter, aber anscheinend egal, wie ich den IIS konfigurieren, es wurde auf true festgelegt, mit iis7. Ich setze es auf false überall. Ich werde sehen, was sich in entsprechenden tuning der parameter von morgen.

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)

Danke für Eure Hilfe Jungs, ich habe ein gutes Verständnis für alle caching-Möglichkeiten mit IIS jetzt ;). Es ist interessant, dass dies verhält sich anders mit IIS 7.0 (IIS6 und Cassiini waren konsistent).

Edit:

Mehr info: http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201 , es ist zu debug/release arbeiten von FindView.

Dies war mein genaues problem: http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201

schwer zu erraten, ohne zu wissen, erweitern Sie den Motor : )
Ich vergaß hinzuzufügen, dass in der Gleichung, die ich nicht unbedingt MVC sein könnte, das Zwischenspeichern der view-Auflösung selbst.

InformationsquelleAutor troebr | 2011-11-28

Schreibe einen Kommentar