webentwicklung-frage-antwort-db.com.de

Implementieren einer benutzerdefinierten Fehlerseite auf einer ASP.Net-Website

Ich habe eine ASP.Net-Website und möchte eine benutzerdefinierte Fehlerseite verwenden. Ich habe den folgenden Code in meine web.config eingefügt

<customErrors mode="On" defaultRedirect="~/error.aspx">
    <error statusCode="404" redirect="~/error.aspx" />
</customErrors>

Das Problem ist, wenn ich zu einer nicht vorhandenen URL gehe, wird immer noch die 404-Fehlerseite verwendet, die im IIS Manager angegeben ist.

Frage: Wie kann ich die von mir erstellte error.aspx-Seite verwenden? Warum überschreiben die Einstellungen im IIS Manager die web.config?

17
Yeodave

Versuchen Sie es auf diese Weise, fast gleich ... aber das habe ich getan und gearbeitet.

<configuration>
    <system.web>
       <customErrors mode="On" defaultRedirect="apperror.aspx">
          <error statusCode="404" redirect="404.aspx" />
          <error statusCode="500" redirect="500.aspx" />
       </customErrors>
    </system.web>
</configuration> 

oder versuchen Sie, die 404-Fehlerseite aus den IIS -Einstellungen zu ändern, falls dringend erforderlich.

25
Hrushikesh

Es gibt zwei Möglichkeiten, benutzerdefinierte Fehlerseiten für ASP.NET-Sites zu konfigurieren:

  1. Internet Information Services (IIS) Manager (die grafische Benutzeroberfläche)
  2. web.config-Datei

In diesem Artikel wird erläutert, wie die einzelnen Funktionen ausgeführt werden:

Der Grund, warum Ihre Seite error.aspx nicht angezeigt wird, ist möglicherweise auf einen Fehler in Ihrer web.config zurückzuführen. Versuchen Sie es stattdessen:

<configuration>
   <system.web>
      <customErrors defaultRedirect="error.aspx" mode="RemoteOnly">
         <error statusCode="404" redirect="error.aspx"/>
      </customErrors>
   </system.web>
</configuration>

Sie müssen möglicherweise sicherstellen, dass Error Pages in IIS Manager - Feature Delegation auf Lesen/Schreiben gesetzt ist:

IIS Manager: Feature Delegation panel

Diese Antwort kann Ihnen auch beim Konfigurieren der Datei web.config helfen:

7
JohnB
<customErrors defaultRedirect="~/404.aspx" mode="On">
    <error statusCode="404" redirect="~/404.aspx"/>
</customErrors>

Der obige Code gilt nur für "Page Not Found Error-404", wenn die Dateierweiterung bekannt ist (.html, .aspx usw.).

Daneben haben Sie auch Kundenfehler für Erweiterung nicht bekannt oder nicht korrekt als gesetzt 

.aspwx oder .vivaldo. Sie müssen httperrors-Einstellungen in web.config hinzufügen.

<httpErrors  errorMode="Custom"> 
       <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx"         responseMode="Redirect" />
</httpErrors>
<modules runAllManagedModulesForAllRequests="true"/>

es muss im <system.webServer></system.webServer> sein

1
RASKOLNIKOV
<system.webServer>     
<httpErrors errorMode="DetailedLocalOnly">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="your page" responseMode="Redirect" />
    </httpErrors>
</system.webServer>
0
Tommaso

Handelt es sich um einen Rechtschreibfehler in Ihrem schließenden Tag, dh:

</CustomErrors> instead of </CustomError>?
0
Siv