web-dev-qa-db-fra.com

Implémentation d'une page d'erreur personnalisée sur un site Web ASP.Net

J'ai un site Web ASP.Net et je veux utiliser une page d'erreur personnalisée. Je mets le code suivant dans mon web.config

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

Le problème est que lorsque je vais à une URL qui n'existe pas, j'utilise toujours la page d'erreur 404 spécifiée dans IIS Manager.

Question: Comment puis-je lui faire utiliser la page error.aspx que j'ai créée? Pourquoi les paramètres de IIS Manager remplacent-ils le fichier web.config?

17
Yeodave

Essayez de cette façon, presque pareil… mais c'est ce que j'ai fait et travailler.

<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> 

ou essayez de modifier la page d'erreur 404 à partir de IIS, si nécessaire de toute urgence.

25
Hrushikesh

Il existe 2 façons de configurer des pages d'erreur personnalisées pour les sites ASP.NET:

  1. Gestionnaire des services Internet (IIS) (interface graphique)
  2. fichier web.config

Cet article explique comment faire chacun:

La raison pour laquelle votre page {error.aspx _ ne s'affiche pas peut-être à cause d'une erreur dans votre web.config. Essayez ceci à la place:

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

Vous devrez peut-être vous assurer que Error Pages dans IIS Manager - Délégation de fonctions est défini sur lecture/écriture:

IIS Manager: Feature Delegation panel

Cette réponse peut également vous aider à configurer le fichier web.config:

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

Le code ci-dessus est uniquement pour "Erreur de page non trouvée-404" si l'extension du fichier est connue (.html, .aspx, etc.)

A côté de cela, vous avez également défini les erreurs client pour les extensions inconnues ou incorrectes. 

.aspwx ou .vivaldo. Vous devez ajouter des paramètres httperrors dans web.config

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

il doit être à l'intérieur du <system.webServer></system.webServer>

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