2008-11-05 3 views
16

J'ai un site où j'utilise CustomErrors dans web.config pour spécifier une page d'erreur personnalisée, et cela fonctionne très bien. La page personnalisée 404 est également spécifiée dans la configuration IIS (car si ce n'est pas le cas, je n'obtiens pas ma page 404 personnalisée).ASP.NET aspxerrorpath dans l'URL

Mais j'ai une certaine logique qui intervient si un utilisateur obtient un 404 qui regarde son URL demandée et faire une suggestion de navigation, le cas échéant. Cette logique repose sur la valeur aspxerrorpath. Sur mon PC de développement, aspxerrorpath est correctement ajouté à l'URL, comme ceci: http://localhost:3092/FileNotFound.aspx?aspxerrorpath=/badpage.aspx, mais sur mon site de test, aucun aspxerrorpath n'est ajouté à l'URL, donc toute ma logique personnalisée est ignorée et mes suggestions ne le sont pas travail. Je ne suis pas sûr si c'est un problème de configuration d'IIS ou quelque chose d'autre. Le serveur Web est Windows Server 2008 avec IIS 7.

Des idées?

Merci beaucoup.

+0

Sur le serveur, est-il redirigé vers FileNotFound.aspx ou l'URL reste-t-elle la même lorsque l'erreur se produit? Y a-t-il une valeur pour defaultRedirect dans le fichier web.config? Si vous supprimez les valeurs dans cet élément, le comportement change-t-il? –

+0

Merci John. Plus d'informations: Sur le serveur, l'URL reste la même (elle ne va pas à FileNotFound.aspx). Il n'y a pas de valeur defaultRedirect dans le fichier web.config. – theog

Répondre

18

Le paramètre aspxerrorpath est passé si l'erreur a été interceptée par .NET (et que la page d'erreur spécifiée dans web.config est utilisée). Cela se produit si vous utilisez le serveur Web de développement ou si IIS est configuré pour ne pas vérifier que le fichier existe.

Si IIS vérifie que le fichier existe, l'erreur personnalisée configurée dans IIS est utilisé, et l'URL demandée est inclus dans le querystring quelque chose comme

http://example.com/FileNotFound.aspx?404;http://example.com/badpage.aspx

6

Vous devrez peut-être ajouter le ci-dessous à web.config

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

pour plus d'informations, consultez: http://geekswithblogs.net/shahed/archive/2007/10/23/116278.aspx

Mise à jour: Nous pouvons utiliser la fonctionnalité IIS7 pour afficher les pages d'erreur 404 personnalisées en utilisant HTTPModules comme décrit dans http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx

+0

Merci Ramesh. J'ai cet ensemble dans le web.config. – theog

+0

@theog: S'il vous plaît laissez-moi savoir quelle page non existante vous essayez d'accéder à la machine d'essai. Est-il associé au processus de travail aspnet? Aussi, jetez un oeil à 404 HttpModule décrit dans http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx – Ramesh