Wie füge ich eine standortweite Ausfallzeit-Fehlermeldung in IIS mit einem benutzerdefinierten 503-Fehlercode hinzu?

9

Meine Website wird für einige Zeit wegen Wartungsarbeiten nicht verfügbar sein, und ich möchte sicherstellen, dass (1) Suchmaschinen für jede Seite einen HTTP 503-Fehlercode anzeigen und (2) Menschen eine freundliche Meldung sehen, in der die Ausfallzeit entsprechend beschrieben wird Ausfallzeiten SEO Best Practices .

Wie richte ich IIS 7.5 so ein, dass jede Anforderung eine benutzerdefinierte 503-Fehlermeldung erhält?

Anirvan
quelle

Antworten:

12

Eine Möglichkeit ist die Verwendung der Url-Rewrite- Erweiterung.

Sie können dann eine Regel wie diese verwenden, um alle Anforderungen abzufangen:

<system.webServer>
    ...
    <rewrite>
        <rules>
            <rule name="SiteDown" stopProcessing="true">
                <match url=".*" />
                <action type="CustomResponse" statusCode="503" statusReason="Down for maintenance" statusDescription="will be back up soon" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

Dies kümmert sich um die Suchmaschinen, für die Benutzer können Sie Folgendes hinzufügen:

<system.webServer>
      ...
     <httpErrors existingResponse="Auto" errorMode="Custom" defaultResponseMode="File">
        <remove statusCode="503" subStatusCode="-1" />
        <error statusCode="503" path="503.html" />
     </httpErrors>
</system.webServer>

und legen Sie dann eine 503.html-Datei im Stammverzeichnis Ihrer Site ab, die eine nette Fehlermeldung enthält. Da Sie auf der Seite, die sich auf der Site selbst befindet, keine Stile oder Bilder verwenden können, müssen Sie einen Link zu einer anderen Site erstellen oder alle Stile und Bilder in die HTML-Seite einfügen.

Peter Hahndorf
quelle
Ich
erhalte
Dies funktioniert, aber es bedeutet, dass wir diese Konfigurationen immer dann, wenn wir unsere Website zur Wartung herunterfahren oder unseren App-Pool stoppen, in unsere Datei web.config einfügen und sie später entfernen müssen, sobald die App aktiv ist. Das verstehe ich ... bitte korrigiere mich, wenn ich falsch liege.
Ankush Jain
@AnkushJain - richtig, aber Sie können sie skripten, damit Sie die Konfigurationen nicht manuell ändern müssen.
Peter Hahndorf
8

Wenn Sie eine .NET-Anwendung mit IIS verwenden, können Sie auch eine app_offline.htm- Datei verwenden, um eine Anwendung herunterzufahren und zu verhindern, dass Seiten mit einem entsprechenden 503-Fehlercode angefordert werden.

Anirvan
quelle
2
+1, aber für ASP.NET 2.0-Apps lautet der zurückgegebene Statuscode 404! Die Lösung ist ein temporärer 4.0-App-Pool für die Site
Antonio Bakula
Dies ist die beste Antwort, einfach, alle Seiten abfangen, richtigen Code regeln!
Zyo
3

Sie können eine web.config im Folgenden einrichten und in Ihrem Stammverzeichnis ablegen.

<rule name="Send 503" patternSyntax="Wildcard" stopProcessing="true">
  <match url="*" />
  <action type="CustomResponse" statusCode="503" subStatusCode="0" statusReason="Service Unavailable" statusDescription="The server is down for maintenance" />
</rule>
Steve
quelle