2015-07-05 18 views
7

Ich habe vor kurzem den Host verschoben und musste Kundenfehler erneut in IIS einrichten.Benutzerdefinierte Fehler 404-Seite funktioniert nicht auf IIS 8.5

Ich kann auf IIS-Verwaltungs gehen und Seiten Fehler wie folgt:

Custom Errors on IIS

Dann kann ich auf die Benutzerdefinierte Fehler gehen, und die Optionen wie folgt festgelegt:

Customer Errors setup

Das erstellt meine web.config-Datei wie folgt:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="ExecuteURL"> 
      <remove statusCode="500" subStatusCode="100" /> 
      <remove statusCode="500" subStatusCode="-1" /> 
      <remove statusCode="404" subStatusCode="-1" /> 
      <error statusCode="404" prefixLanguageFilePath="" path="/error_404.asp" responseMode="ExecuteURL" /> 
      <error statusCode="500" prefixLanguageFilePath="" path="/error_500.asp" responseMode="ExecuteURL" /> 
      <error statusCode="500" subStatusCode="100" path="/error_500.asp" responseMode="ExecuteURL" /> 
     </httpErrors> 
    </system.webServer> 
</configuration> 

Wenn ich die Seiten teste, funktioniert der 505-Fehler einwandfrei und leitet auf die richtige Seite um, aber der 404 leitet nicht um und gibt den Standard-IIS ​​404-Fehler zurück. Ich habe bestätigt, dass die 404-Fehlerseite auf dem Server an der richtigen Stelle vorhanden ist.

Ich kann nicht sehen, was ich sonst noch tun muss.

+0

Betrachten Sie die Lösung als Antwort und akzeptieren Sie sie.Andernfalls könnte eine Frage ohne Antworten in Zukunft gelöscht werden. –

+0

Danke für den Hinweis - fertig. – 4532066

Antwort

6

Verstanden am Ende arbeitet (unterstützt durch das Auffinden: http://forums.iis.net/t/1173965.aspx), mit:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL"> 
      <remove statusCode="500" subStatusCode="100" /> 
      <remove statusCode="500" subStatusCode="-1" /> 
      <remove statusCode="404" subStatusCode="-1" /> 
      <error statusCode="404" path="/error_404.asp" responseMode="ExecuteURL" /> 
      <error statusCode="500" prefixLanguageFilePath="" path="/error_500.asp" responseMode="ExecuteURL" /> 
      <error statusCode="500" subStatusCode="100" path="/error_500.asp" responseMode="ExecuteURL" /> 
     </httpErrors> 
    </system.webServer> 
</configuration> 
2

Ich war ein ähnliches Problem mit dem ich eine benutzerdefinierten 404-Seite an/Error habe/fehlt aber es wasn‘ t für statische Dateien, die nicht vorhanden waren, oder für Ordner/Verzeichnisse, die DID vorhanden waren (aber nicht von MVC bereitgestellt werden sollten). Die Steuerung für die fehlende Seite hat die folgende:

Response.AddHeader("Content-Type","text/html; charset=utf-8"); 
    Response.TrySkipIisCustomErrors = true; 
    Response.StatusCode = (int)HttpStatusCode.NotFound; // 404 

Auch war ich nicht meine benutzerdefinierte Fehlerseite bekommen, wenn ich folgendes in einem Controller zurückgegeben:

return HttpNotFound(); 

Ich kann den IIS-Standardfehler ändern eine leere Seite, wenn ich Pass-Through gesetzt:

<httpErrors existingResponse="PassThrough" /> 

es Umstellung auf „Ersetzen“ den Standard gemacht IIS Fehler wieder zeigen.

Ich hatte auch einen Abschnitt in meiner web.config, aber ich habe es herausgenommen, wie ich IIS 8.5 bin es sieht nicht aus wie es mehr benötigt wird.

<system.web> 
    <customErrors mode="Off"> 
</system.web> 

Also im Grunde konnte ich nicht Standard-IIS-Nachrichten loswerden - entweder Einzeiler oder die detaillierteren. Mein httperrors Abschnitt sah wie folgt aus:

<httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL"> 
    <remove statusCode="404" /> 
    <error statusCode="404" path="/Error/Missing" /> 
</httpErrors> 

Schließlich ich auf diese Frage kam und ich schaute auf die andere Antwort auf diese Frage und erkannte, dass ich eine ResponseMode auf jeder Fehlerzeile versuchen könnte. Ich dachte, das wäre nicht notwendig, da ich den defaultResponseMode-Set hatte - aber es macht einen Unterschied !!

Also, wenn Sie eine benutzerdefinierte 404-Seite Verwendung dieses httperrors Modul dienen wollen:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" /> 
    <error statusCode="404" path="/Error/Missing" responseMode="ExecuteURL" /> 
</httpErrors> 

ich diese Details alle hier gesetzt haben so hoffentlich dies zeigt sich für jemand anderes die gleichen Dinge die Suche Ich habe - ich hoffe es hilft!

Verwandte Themen