134 Stimmen

ASP.NET 2.0 - Wie verwendet man app_offline.htm

Ich habe gelesen, dass die app_offline.htm Datei, die im Root einer .NET 2.0-Anwendung platziert werden kann, die im Wesentlichen die Anwendung herunterfährt und verhindert, dass andere Seiten angefordert werden.

Ich habe die Datei im Stammverzeichnis abgelegt, und meine Website wird trotzdem geladen. Ich habe in IIS die Standarddokumente aufgerufen und sie auf app_offline.htm und die Website wird immer noch geladen (dies könnte allerdings ein Caching-Problem gewesen sein)

Wie auch immer, hat irgendjemand damit Probleme gehabt? Mache ich etwas falsch?

0 Stimmen

Gibt es eine Microsoft-Seite, die dies dokumentiert?

0 Stimmen

0 Stimmen

171voto

CraigTP Punkte 42633

Ich habe den äußerst praktischen app_offline.htm-Trick zum Herunterfahren/Aktualisieren von Websites in der Vergangenheit ohne Probleme verwendet.

Vergewissern Sie sich, dass Sie die Datei "app_offline.htm" tatsächlich im "Stammverzeichnis" der Website platzieren, die Sie im IIS konfiguriert haben.

Vergewissern Sie sich auch, dass die Datei genau so benannt ist, wie sie sein soll: app_offline.htm

Abgesehen davon sollten Sie keine weiteren Änderungen an IIS vornehmen müssen, da die Verarbeitung dieser Datei (mit diesem speziellen Namen) von der ASP.NET-Laufzeitumgebung und nicht von IIS selbst (für IIS v6) durchgeführt wird.

Beachten Sie jedoch, dass, auch wenn Sie diese Datei im Stammverzeichnis Ihrer Website platzieren, die Anwendung gezwungen wird, "herunterzufahren" und den Inhalt der Datei "app_offline.htm" selbst anzuzeigen, jede bestehende Anfragen werden weiterhin auf der echten Website angezeigt. Nur nuevo Anfragen erhalten den Inhalt von app_offline.htm.

Wenn Sie immer noch Probleme haben, finden Sie unter den folgenden Links weitere Informationen:

Scott Gu's App_Offline.htm

App_Offline.htm und Umgehung der "IE Friendly Errors"-Funktion

Stoppt app_offline.htm laufende Anfragen oder nur neue Anfragen?

7 Stimmen

@JackM - Kein Problem! In der Tat lasse ich die Datei oft auf meiner Website und nenne sie "xapp_offline.htm". Sie sitzt also einfach da und tut nichts. Wenn ich die Website ganz oder teilweise aktualisieren möchte, benenne ich die Datei einfach um und entferne das Präfix "x" (dies geschieht in der Regel über FTP). Dadurch wird die Website für mich heruntergefahren, ich führe die Aktualisierung durch und benenne die Datei dann wieder mit dem Präfix "x" um!

0 Stimmen

@JackMarchetti - Wird dies auch für ASP.NET MVC-Websites funktionieren, die global.asax-Routing verwenden? Ich habe alle Vorschläge hier überprüft, aber immer noch kein Glück haben, dies zu arbeiten :(

0 Stimmen

Update zum vorherigen Kommentar: Es funktioniert jetzt und muss eine Art Caching-Problem gewesen sein. Ich hatte <CTRL>+Refresh verwendet, aber vermutlich wurde es irgendwo anders zwischengespeichert.

48voto

Mark Richman Punkte 27781

Stellen Sie sicher, dass Ihre Datei app_offline.htm mindestens 512 Byte lang ist. Eine app_offline.htm mit null Byte hat keine Auswirkungen.

UPDATE : Neuere Versionen von ASP.NET/IIS verhalten sich möglicherweise besser als zu dem Zeitpunkt, an dem ich dies zum ersten Mal geschrieben habe.

UPDATE 2: Wenn Sie ASP.NET MVC verwenden, fügen Sie Folgendes zur web.config hinzu:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

1 Stimmen

Ich hatte den exakten Dateinamen mit einer leeren Datei und das funktionierte - die leere Seite wurde unabhängig von der verwendeten URL angezeigt

0 Stimmen

Prüfen Sie diesen Link für das Problem der 512-Byte-Grenze: codeproject.com/Artikel/21319/

0 Stimmen

Dies gilt vor allem für ältere Versionen des IE, die die Seite durch eine eigene Fehlermeldung ersetzen können

15voto

Beachten Sie, dass sich dies unter IIS 6 und 7.x sowie .NET 2, 3 und 4.x gleich verhält.

Beachten Sie auch, dass IIS diesen http-Statuscode zurückgibt, wenn app_offline.htm vorhanden ist:

HTTP/1.1 503 Service Unavailable

Das ist alles beabsichtigt. So kann Ihr Load Balancer (oder was auch immer) erkennen, dass der Server nicht online ist.

1 Stimmen

Sicherlich wollen Sie nicht, dass Ihr Load Balancer denkt, dass der Server offline ist, weil Sie die app_offline.htm für die Benutzer während des Wartungszeitraums?

2 Stimmen

@Luke: Ein besseres Beispiel dafür, warum eine 503-Antwort hilfreich ist: Es ist besser, wenn der Web-Crawler von Google weiß, dass Ihre Website derzeit nicht erreichbar ist, als dass er sich entschließt, Ihren "Website ist nicht erreichbar"-Inhalt zu indizieren (und Ihre Website als mit einer Menge doppeltem Inhalt versehen zu kennzeichnen). Außerdem kann es hilfreich sein, wenn Ihr CDN erkennen kann, dass Ihr Ursprung nicht verfügbar ist, und somit die Zwischenspeicherung Ihrer Inhalte vermeidet.

10voto

Jeremy A. West Punkte 1997

Mögliches Genehmigungsproblem

Ich weiß, dass dieser Beitrag schon ziemlich alt ist, aber ich hatte ein ähnliches Problem und meine Datei war richtig geschrieben.

Ursprünglich habe ich die Datei app_offline.htm an einem anderen Ort erstellt und sie dann in den Stamm meiner Anwendung verschoben. Aufgrund meiner Einrichtung hatte ich dann ein Problem mit den Berechtigungen.

Die Website tat so, als ob sie nicht vorhanden wäre. Das Anlegen der Datei im Stammverzeichnis statt des Verschiebens hat mein Problem behoben. (Oder Sie könnten einfach die Berechtigung in Eigenschaften->Sicherheit ändern)

Ich hoffe, es hilft jemandem.

4voto

Andrew Hare Punkte 332190

Stellen Sie sicher, dass app_offline.htm befindet sich im Stammverzeichnis des virtuellen Verzeichnisses oder der Website im IIS.

0 Stimmen

Es ist auf jeden Fall in der Root. Ich habe meinen Inetput \wwwroot [WebsiteVerzeichnis] \app_offline.htm

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X