Frage

Was ist der Unterschied zwischen den customErrors und httpErrors Abschnitten der web.config-Datei in ASP.NET MVC-Anwendungen?

Was sind die Richtlinien für jeden Abschnitt mit?

War es hilfreich?

Lösung

Disclaimer:. Dieses von meiner Erfahrung und nicht die Tatsache bewiesen,

Beide werden verwendet, die Fehlerbehandlung für eine Website zu definieren, aber unterschiedliche Software bezieht sich auf verschiedene Konfigurationselemente.

customErrors ist ein Erbe (rückwärts compatable) Element, verwendet von Visual Studio Development Server (aka. VSDS oder Cassini).

httpErrors ist das neue Element, das nur von IIS7 verwendet wird.

Dies unterstreicht die möglich Problem, wenn Websites ASP.NET Entwicklung während VSDS anstelle des lokalen IIS verwendet wird.

Auch siehe diesen Beitrag von mir darüber, wie Fehlermeldungen mit IIS7 zu handhaben, wenn Sie die volle Kontrolle über die Fehlerausgabe haben mögen.

Zusammenfassung:

  • Die Entwicklung in VSDS - Verwendung customErrors
  • Veröffentlichen der Site IIS6 - Verwendung customErrors
  • Veröffentlichen der Site IIS7 -. Verwendung httpErrors

, und wenn Sie mit VSDS entwickeln, sondern zu IIS7 veröffentlichen, dann ich denke, u wird beides brauchen.

Andere Tipps

* Aktualisiert April 2016

Die Custom Attribut wird verwendet, wenn der NET-Code ist eine Ausnahme zu werfen (404, 403, 500 usw.) und das httperrors Attribut wird verwendet, wenn eine Ausnahme IIS selbst wirft.

  • / myfakeextensionslessurl -> httperrors 404
  • /myfakeaspsx.aspx -> Custom 404
  • /myfakeimage.jpg -> httperrors 404
  • /throw500.apx -> Custom 500
  • / throw500 -> Custom 500

Es gibt viele Fallen versucht, dies richtig zu konfigurieren. Also, wenn Sie für ein schnelles Beispiel suchen, die besten zwei Optionen, die Sie haben, sind:

Beispiel 1: Verwendung von HTML-Seiten

<system.web>
  <customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
    <error statusCode="403" redirect="/Error403.html" />
    <error statusCode="404" redirect="/Error404.html" />
    <error statusCode="500" redirect="/Error500.html" />
  </customErrors>
</system.web>
<system.webServer>
  <httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
    <remove statusCode="403" />
    <remove statusCode="404" />
    <remove statusCode="500" />
    <error statusCode="403" responseMode="File" path="Error403.html" />
    <error statusCode="404" responseMode="File" path="Error404.html" />
    <error statusCode="500" responseMode="File" path="Error500.html" />
  </httpErrors>
</system.webServer>

Beispiel 2: Verwenden aspx Seiten

<system.web>
  <customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
    <error statusCode="403" redirect="/Error403.aspx" />
    <error statusCode="404" redirect="/Error404.aspx" />
    <error statusCode="500" redirect="/Error500.aspx" />
  </customErrors>
</system.web>
<system.webServer>
  <httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
    <remove statusCode="403" />
    <remove statusCode="404" />
    <remove statusCode="500" />
    <error statusCode="403" responseMode="ExecuteURL" path="Error403.aspx" />
    <error statusCode="404" responseMode="ExecuteURL" path="Error404.aspx" />
    <error statusCode="500" responseMode="ExecuteURL" path="Error500.aspx" />
  </httpErrors>
</system.webServer>

Und in den aspx Fehlerseite Sie müssen so etwas wie diese (Beispiel Seite 404) tun:

<% 
    Response.StatusCode = 404;
    Response.TrySkipIisCustomErrors = true;
 %>

Hinweis:. Mit Erweiterung weniger Urls im Custom Abschnitt ist nicht möglich (ohne Hacks)

Eine Arbeit um zu deaktivieren individuelle Fehler und lassen http Fehler behandeln die benutzerdefinierte Seite. Ein Freund hat ein solches Setup erstellt, wenn ich einige Zeit, ich werde den Code teilen.

Hintergrund

Eine gute benutzerdefinierte Fehlerseite wird:

  1. Zeigen Sie die wirkliche Ausnahme, wenn Sie das Problem Seite lokal besuchen
  2. Zeigen Sie eine benutzerdefinierte Seite, wenn Sie das Problem Seite besuchen remote
  3. Wird nicht Umleitung, sondern einfach die Fehlerseite Inhalt zeigt (wegen der SEO-Gründe)
  4. den korrekten Statuscode anzeigen

So einige Optionen in unserer Konfiguration zu klären:

  1. <customErrors mode="RemoteOnly". Sie können hier angeben:. On, Off, RemoteOnly

    • On = immer anzeigen benutzerdefinierte Fehlerseiten
    • Off = immer anzeigen wirkliche Fehler
    • RemoteOnly = Zeigen Sie den Fehler lokal, aber die benutzerdefinierte Fehlerseite der Ferne zeigen. So wollen wir RemoteOnly für Anweisung 1
  2. <customErrors redirectMode="ResponseRewrite". Sie können hier angeben: ResponseRedirect oder ResponseRewrite. Der ResponseRedirect Modus wird die Fehlerseite auf die benutzerdefinierte Fehlerseite umleiten. Für einen Link Crawler (SEO), wird dies in 302 führen -> 500, aber Sie wollen, dass der Link Crawler einen 500-Fehler erhalten

  3. .
  4. <httpErrors errorMode="DetailedLocalOnly". Dies ist das Äquivalent des customErrors Modus. Optionen, die Sie haben. Custom, Detailed, DetailedLocalOnly

Ein gutes Blog-Post, die mir sehr geholfen ist: http: // Ben Foster .io / Blog / aspnet-mvc-custom-Fehler-Seiten

<customErrors> gegen <httpErrors>


<customErrors>

  • noch in IIS7 +
  • benutzerdefinierte Fehlerseiten für Anfragen bearbeitet von ASP.NET angeben
  • nur Griffe Anfragen innerhalb der ASP.NET-Anwendung
  • statische Dateien wie HTML-Dateien oder ein Verzeichnis ( „freundlich“) URLs werden nicht behandelt

<httpErrors>

  • eingeführt in IIS7
  • benutzerdefinierte Fehlerseiten für Anfragen bearbeitet von IIS angeben
  • Griffe Anfragen innerhalb der ASP.NET-Anwendung UND / ODER Griffe Anfragen außerhalb der - ASP.NET-Anwendung *
  • Alle Dateien und URLs werden behandelt *
  

Hinweis: es ist nicht mehr notwendig customErrors

zu verwenden,

Zitat Quelle: Benutzerdefinierte 404 und Fehlerseiten in ASP.NET (ausgezeichneten Artikel)


ExecuteURL dient dynamischen Inhalt, wie eine ASPX- Seite (der path Wert a Server relative URL sein ):

<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" >
    <remove statusCode="404"/>
    <error statusCode="404" responseMode="ExecuteURL" path="/error.aspx" />
  </httpErrors>
</system.webServer>

File dient eine benutzerdefinierte Fehlerdatei, wie eine HTML-Seite:

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

Referenz: HTTP-Fehler (www.iis.net)

, um weitere Informationen, lesen Sie die www.iis.net Link oben

Fehler Abschnitt in Web-Config ist für die Bereitstellung von benutzerdefinierter HTTP-Fehlerbehandlung Ansatz gibt es zwei Kapitel, ein Custom innerhalb des Ausschnitts system.web und andere httperrors innerhalb des Ausschnitts system.webServer (wie unten angegeben)

Custom: Dieser Abschnitt war im Einsatz, bevor IIS 7 eingeführt, IIS 6 5 und vor voll diesen Abschnitt für den Umgang mit Fehlern benutzerdefinierten http gemäß HTTP-Statuscode.

httperrors: IIS 7 und später diesen Abschnitt sowie Custom zu Griff benutzerdefinierte HTTP-Fehler auf der Grundlage ihrer Dateierweiterungen, wenn angeforderte Seite Erweiterungsregister mit ISAPI dll (ASPX, Ashx, ASMX- .svc etc) wie IIS index.aspx dann abholen von der Einstellung customeErrors aus abholen sonst Einstellung httperrors

unten sind die Beispiele, die für 404 Fehlerbehandlung Prüfung Link lautet:

httperrors vs custom in webconfig, iis, asp.net

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top