ASP.NET 2.0 - Verwendung von app_offline.htm

120

Ich habe über die gelesen app_offline.htm Datei , die im Stammverzeichnis einer .NET 2.0-Anwendung abgelegt werden kann, wodurch die Anwendung im Wesentlichen heruntergefahren und die Anforderung anderer Seiten deaktiviert wird.

Ich habe die Datei im Stammverzeichnis abgelegt und meine Site wird immer noch geladen. Ich habe in IIS Standarddokumente aufgerufen und diese festgelegt, app_offline.htmund die Site wird weiterhin geladen (dies könnte jedoch ein Caching-Problem gewesen sein).

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

Jack Marchetti
quelle
Gibt es eine Microsoft-Seite, die dies dokumentiert?
Coops
Offizielle Dokumentation: msdn.microsoft.com/en-us/library/ff925031.aspx
Brian
Ich habe app_offline.htm erfolgreich verwendet, um meinen Web-App-Inhalt auszublenden und die temporäre Seite anzuzeigen. Ich habe jedoch Probleme, die Originaldaten auch nach dem Löschen der Datei app_offline.htm zu überprüfen. Sie ist meine Frage: stackoverflow.com/questions/42979042/…
naz786

Antworten:

160

Ich habe den äußerst praktischen Trick app_offline.htm verwendet, um Websites in der Vergangenheit ohne Probleme herunterzufahren / zu aktualisieren.

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

Stellen Sie außerdem sicher, dass die Datei genau so benannt ist, wie sie sein sollte: app_offline.htm

Abgesehen davon sollten keine weiteren Änderungen an IIS vorgenommen werden, da die Verarbeitung dieser Datei (mit diesem bestimmten Namen) von der ASP.NET-Laufzeit und nicht von IIS selbst (für IIS v6) ausgeführt wird.

Beachten Sie jedoch, dass die Datei zwar im Stammverzeichnis Ihrer Website abgelegt wird, die Anwendung jedoch zum "Herunterfahren" und Anzeigen des Inhalts der Datei "app_offline.htm" gezwungen wird. Bei vorhandenen Anforderungen wird die eigentliche Website jedoch weiterhin bereitgestellt zu ihnen. Nur neu Anfragen erhalten den Inhalt von app_offline.htm.

Wenn Sie immer noch Probleme haben, versuchen Sie die folgenden Links für weitere Informationen:

Scott Gu's App_Offline.htm

App_Offline.htm und Umgehen der Funktion "IE-freundliche Fehler"

Stoppt app_offline.htm aktuelle oder nur neue Anfragen?

CraigTP
quelle
6
@ JackM - Kein Problem! Tatsächlich lasse ich die Datei oft auf meiner Website und nenne sie so etwas wie "xapp_offline.htm". Es sitzt also einfach da und tut nichts. Wenn ich einen Teil oder die gesamte Site aktualisieren möchte, benenne ich die Datei einfach um und entferne das Präfix "x" (dies erfolgt normalerweise über FTP). Dadurch wird die Site für mich heruntergefahren, ich führe das Upgrade durch und benenne die Datei dann mit dem Präfix "x" zurück!
CraigTP
@JackMarchetti - Funktioniert dies auch für ASP.NET MVC-Websites, die global.asax-Routing verwenden? Ich habe alle Vorschläge hier überprüft, habe aber immer noch kein Glück, dass dies funktioniert :(
Squig
Update auf vorherigen Kommentar: Es funktioniert jetzt und muss eine Art Caching-Problem gewesen sein. Ich hatte <CTRL> + Refresh verwendet, aber vermutlich wurde es woanders zwischengespeichert.
Squig
Gibt es eine Microsoft-Seite, die dies dokumentiert?
Coops
1
@CodeBlend Nun, der Link zu ScottGus Blog ist ziemlich offiziell, aber ich nehme an, die "offiziellste" Microsoft-Seite wäre diese auf MSDN: msdn.microsoft.com/en-us/library/vstudio/…
CraigTP
47

Stellen Sie sicher, dass Ihre Datei app_offline.htm mindestens 512 Byte lang ist. Eine Null-Byte-App_offline.htm hat keine Auswirkung.

UPDATE: Neuere Versionen von ASP.NET/IIS verhalten sich möglicherweise besser als beim ersten Schreiben.

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

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>
Mark Richman
quelle
1
Ich hatte den genauen Dateinamen mit einer leeren Datei und das funktionierte - leere Seite angezeigt, unabhängig von der URL, die ich verwendet habe
Coops
Überprüfen Sie diesen Link für das 512-Byte-Limit-Problem: codeproject.com/Articles/21319/…
Massood Khaari
Dies gilt insbesondere für ältere Versionen von IE, die die Seite durch eine eigene Fehlermeldung ersetzen können
ChewToy
Scott Gu beschreibt es auch in seinem Blog.
Matt
2
Ich konnte meine MVC-Site nur in den Offline-Modus der App versetzen, indem ich meine web.config vollständig durch die oben genannte ersetzte
Matthew Lock
14

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

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

HTTP/1.1 503 Service Unavailable

Dies ist alles beabsichtigt. Auf diese Weise kann Ihr Load Balancer (oder was auch immer) feststellen, dass der Server offline ist.

Jonesome stellt Monica wieder her
quelle
1
Sicherlich möchten Sie nicht, dass Ihr Load Balancer denkt, dass der Server offline ist, weil Sie die app_offline.htmBenutzer während Ihres Wartungsfensters anzeigen möchten ?
Luke
2
@Luke: Ein besseres Beispiel dafür, warum eine 503-Antwort hilfreich ist: Es ist vorzuziehen, dass der Webcrawler von Google weiß, dass Ihre Website derzeit nicht verfügbar ist, anstatt zu entscheiden, dass der Inhalt Ihrer Website nicht verfügbar ist (und Ihre Website als eine Menge Duplikate gekennzeichnet wird) Inhalt). Es kann auch hilfreich sein, wenn Ihr CDN erkennt, dass Ihr Ursprung nicht stimmt, und somit das Zwischenspeichern Ihrer Inhalte vermeidet.
Brian
10

Mögliches Berechtigungsproblem

Ich weiß, dass dieser Beitrag ziemlich alt ist, aber ich bin auf ein ähnliches Problem gestoßen und meine Datei wurde richtig geschrieben.

Ich habe die Datei app_offline.htm ursprünglich an einem anderen Speicherort erstellt und sie dann in das Stammverzeichnis meiner Anwendung verschoben. Aufgrund meines Setups hatte ich dann ein Berechtigungsproblem.

Die Website tat so, als wäre sie nicht da. Das Problem wurde behoben, indem die Datei im Stammverzeichnis erstellt wurde, anstatt sie zu verschieben. (Oder Sie können einfach die Berechtigung unter Eigenschaften-> Sicherheit korrigieren.)

Hoffe es hilft jemandem.

Jeremy A. West
quelle
4

Stellen Sie sicher, dass app_offline.htmsich das im Stammverzeichnis des virtuellen Verzeichnisses oder der virtuellen Website in IIS befindet.

Andrew Hare
quelle
Es ist definitiv in der Wurzel. Ich habe meinen Eingang \ wwwroot [WebsiteDirectory] \ app_offline.htm
Jack Marchetti
3

Stellen Sie sicher, dass die Dateinamenerweiterungen im Explorer sichtbar sind und der Dateiname tatsächlich angezeigt wird

app_offline.htm

nicht

app_offline.htm.htm

nPcomp
quelle
0

Ich stieß auf ein Problem, das der ursprünglichen Frage sehr ähnlich war und dessen Lösung einige Zeit in Anspruch nahm.

Wenn jemand anderes an einer MVC-Anwendung arbeitet und den Weg in diesen Thread findet, stellen Sie sicher, dass Sie eine Platzhalterzuordnung zu der entsprechenden .Net aspnet_isapi.dll definiert haben. Sobald ich dies tat, begann sich meine app_offline.htm wie erwartet zu verhalten.


IIS 6-Konfigurationsschritte

Wählen Sie in den Eigenschaften der IIS-Anwendung die Registerkarte Virtuelles Verzeichnis.

Klicken Sie unter Anwendungseinstellungen auf die Schaltfläche Konfiguration.

Klicken Sie unter Platzhalter-Anwendungszuordnungen auf die Schaltfläche Einfügen.

Geben Sie C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll ein und klicken Sie auf OK.

Peter Bernier
quelle