2009-12-11 5 views
10

J'ai cela dans le web.config:httpError ne montrera pas les pages d'erreur personnalisées

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound.aspx" responseMode="Redirect" /> 
    <error statusCode="500" prefixLanguageFilePath="" path="/Error/ServerError.aspx" responseMode="Redirect" /> 
</httpErrors> 

Mais IIS montre encore le construit en page d'erreur.

Des idées?

Répondre

5

Voici comment je l'utilise et cela fonctionne pour moi, il semble assez similaire, sauf pour les directives de subStatusCode et la ExecuteURL.


<httpErrors> 
    <!--Remove inherited 500 error page setting --> 
    <remove statusCode='500' subStatusCode='-1'/> 
    <!--Override the inherited 500 error page setting with the 'My500.html' as its path--> 
    <error statusCode='500' subStatusCode='-1' prefixLanguageFilePath='' path='/My500.html' responseMode='ExecuteURL'/> 
</httpErrors> 
2

Il semble que vous utilisiez une URL relative au serveur. Essayez de définir responseMode="ExecuteURL" à partir de MSDN.

ExecuteURL

Sert de contenu dynamique (par exemple, un fichier .asp) spécifié dans le chemin attribut pour l'erreur de mesure. Si responseMode est défini sur ExecuteURL, la valeur du chemin doit être une URL relative au serveur . La valeur numérique est 1.

Redirect

Redirige navigateurs clients à l'URL spécifié dans le chemin attribut qui contient le fichier d'erreur personnalisé. Si responseMode est défini sur Redirect, la valeur du chemin doit être une URL absolue. La valeur numérique est 2.

19

Vous devrez peut-être définir l'attribut existingReponse dans l'élément httpErrors comme ceci:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <clear /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" /> 
    <error statusCode="500" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" /> 
</httpErrors> 
+0

C'est ce qui causait problème avec la dernière Orchard 1.4, acclamations. – Sarkie

+0

@Kiquenet http://www.iis.net/configreference/system.webserver/httperrors Je ne sais pas mais j'ai résolu le problème avec Auto. – Ernesto

+0

Quel est le code source de *** ErrorHandler.aspx ***? – Kiquenet

0

Assurez-vous que vous avez la fonction appropriée de réglage pour la redirection de la page d'erreur dans IIS. Pour vérifier cela, à partir de la page Pages d'erreur dans le Gestionnaire des services Internet, cliquez sur Modifier les paramètres de fonctionnalité et assurez-vous que pages d'erreur personnalisées est vérifiée si vous testez les redirections à partir du serveur Web lui-même. Si vous testez à distance, vous pouvez laisser Les erreurs détaillées pour les demandes locales et les pages d'erreur personnalisées pour les demandes à distance sont vérifiées. Cela semble être l'option par défaut dans mon environnement de test.

3

Si vous utilisez ExecuteURL, le chemin d'accès de la page d'erreur personnalisée doit se trouver dans le même pool d'applications que l'application elle-même.

Pour des raisons architecturales, IIS 7.0 ne peut exécuter l'URL que s'il se trouve dans le même pool d'applications. Utilisez la fonction de redirection pour exécuter une erreur personnalisée dans un autre pool d'applications.

Questions connexes