2013-05-06 2 views
5

In meiner web.config Datei habe ich einige benutzerdefinierte Fehler angegeben:Benutzerdefinierte Fehlerseiten in web.config decken nicht alle URL-Pfade

<customErrors mode="RemoteOnly" defaultRedirect="~/Error"> 
    <error statusCode="500" redirect="~/Error" /> 
    <error statusCode="404" redirect="~/NotFound" /> 
</customErrors> 

nun einige Links, wie http://mysite.com/dsflhsdff wird richtig mysite.com/notfound umgeleitet. Aber einige Links, wie https://mysite.com/videoconference/0/0/0 werden vom Server selbst behandelt - anstelle meiner benutzerdefinierten Fehlerseite, bekomme ich IIS Fehlerseite (Datei oder Verzeichnis nicht gefunden). Im Beispiel wird dieser Link - https://scyk.pl/forums/0/0/0 wird richtige 404 Fehler (meine benutzerdefinierte Fehlerseite) erzeugen.

Was passiert hier? Muss ich benutzerdefinierte IIS-Fehler manuell einrichten? Wenn ja, wie kann ich das tun?

Antwort

0

Wenn der Aufruf der Seite nicht die asp.net-Engine übergeben, dann wird ja von IIS behandelt.

Sie können das tun setup very easy if you have direct access to the iis, aber IIS gibt Ihnen die Möglichkeit, diese benutzerdefinierten Fehler auch direkt aus der web.config Ihrer Website einrichten. Hier ist ein Beispiel für den Fehler 404:

<system.webServer> 
    <httpErrors> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/PageNotFound.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 
</system.webServer> 

Mehr Infos unter: http://www.iis.net/configreference/system.webserver/httperrors

1

Dies liegt daran, ASP.NET nicht einmal weiß, dass es eine Anforderung für die HTM-Seite hat. IIS wird HTM-Seiten selbst behandeln, ohne ASP.NET zu verwenden.

Sie können Ihre benutzerdefinierte Seite bekommen in einem von zwei Möglichkeiten zu zeigen:

ASP.NET Erhalten .htm Seiten zu verarbeiten: In IIS der rechten Maustaste Ihrer Website/virtuelles Verzeichnis -> Eigenschaften -> Home-Verzeichnis/Registerkarte virtueller Ordner -> Schaltfläche "Konfiguration" unter dem Bereich "Anwendungseinstellungen" -> Fügen Sie das Mapping hinzu. Legen Sie die benutzerdefinierte Fehlerseite für IIS: Klicken Sie in IIS mit der rechten Maustaste auf Ihre Website/virtuelles Verzeichnis -> Eigenschaften -> benutzerdefinierte Fehler Registerkarte -> legen Sie den Fehler 404 auf der Seite Ihre Fehlerseite.

1

Sie können diesen Fehler in der Datei Global.asax in Application_Error Griff Methode

z.B.

void Application_Error(object sender, EventArgs e) 
    { 
     // Code that runs when an unhandled error occurs 
     Exception exc = Server.GetLastError(); 

     // Handle HTTP errors 
     if (exc.GetType() == typeof(HttpException)) 
     { 
      // The Complete Error Handling Example generates 
      // some errors using URLs with "NoCatch" in them; 
      // ignore these here to simulate what would happen 
      // if a global.asax handler were not implemented. 
      /*if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength")) 
       return;*/ 

      //Redirect HTTP errors to HttpError page 
      /*Server.Transfer("HttpErrorPage.aspx");*/ 
     } 
    } 

Weitere Informationen: http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/aspnet-error-handling

0

Dies geschieht, weil IIS nicht in der Lage ist Ihre benutzerdefinierte Fehlerseite in einigen Fällen zu lokalisieren. Dies passierte mir bei bestimmten Erweiterungen, aber durch das Konfigurieren meiner benutzerdefinierten Fehlerseite im Bereich "Fehlerseiten" des IIS-Managers konnte ich jedes Mal meine benutzerdefinierte Fehlerseite treffen.

Heres, wie das tun:

in der IIS-Manager gehen und die betreffende Website wählen, das Symbol des Titel ‚Error Pages‘ unter dem Abschnitt IIS finden.

Nachdem Sie auf das Symbol doppelklicken, wird eine Liste mit Statuscodes und der entsprechenden Datei angezeigt, die für die Übermittlung des Fehlers verantwortlich ist.

Finden Sie den Fehlercode, in Ihrem Fall 404 (wenn es nicht existiert, können Sie es aus dem rechten Menü hinzufügen, indem Sie auf "Hinzufügen ..." klicken), dann klicken Sie auf die Schaltfläche "Bearbeiten ..." im rechten Seitenmenü.

Klicken Sie als Nächstes auf das Optionsfeld "Eine URL auf dieser Site ausführen" in dem Dialogfeld, das Ihnen angezeigt wurde. Hier geben Sie die relative URL an, an die der Benutzer weitergeleitet wird.

Nachdem Sie die Optionen im Dialogfeld Bearbeiten abgeschlossen haben, gehen wollen Sie Ihre Seite in der Hauptfehlerseiten Schmerzen wieder wählen, nur dieses Mal klicken Sie auf ‚Featureeinstellungen bearbeiten ...‘

In In den Einstellungen für Fehlerseiten bearbeiten, die Ihnen angezeigt werden, stellen Sie sicher, dass "Detaillierte Fehler für lokale Anforderungen und benutzerdefinierte Fehlerseiten für Remoteanforderungen" ausgewählt sind. Stellen Sie außerdem sicher, dass die Seite, die Sie im vorherigen Menü "Bearbeiten" eingegeben haben, im Feld "Pfad" im Abschnitt "Standardseite" des Dialogfelds "Fehlerseiten bearbeiten" eingegeben wird. Schließlich muss der Pfadtyp auf 'URL ausführen' gesetzt werden

Verwandte Themen