2010-09-01 3 views
0

Sur mon site, j'ai utilisé le module de réécriture d'URL de IIS7 pour rediriger des URL telles que http://mysite.com/File.aspx?Name=SomeName vers http://mysite.com/SomeName.Redirection personnalisée 404 pour un site avec réécriture d'URL

Il semble que IIS7 a créé une vérification de règle correspondante, de sorte que toute URL du type http://mysite.com/SomeURL est redirigée vers File.aspx. C'est correct dans la plupart des cas, lorsque l'URL est correctement réécrite. Le problème est que dans certains cas, le fichier n'existe plus - http://mysite.com/SomeName2 sera toujours redirigé vers http://mysite.com/File.aspx?Name=SomeName2. Je souhaite afficher une page d'erreur 404 personnalisée pour cette URL. Comment puis-je déclencher l'erreur 404 dans global.asax (j'ai défini la journalisation et la gestion des erreurs d'application dans global.asax)? Le code ci-dessous ne fonctionne pas.

Response.Status = "404 Not Found" 
Response.AddHeader("Location", "http://mysite.com/Invalid-File.aspx?" & Request.QueryString.ToString) 

Il affiche simplement la page d'erreur IIS 404 par défaut. Ajouter un customerror dans web.config n'aide pas.

Merci pour votre aide!

Répondre

1

Lors de la définition d'un code d'état dont vous avez besoin pour empêcher IIS la prise en charge en fonction de votre nouveau code d'erreur, assurez-vous de définir Response.TrySkipIisCustomErrors comme ceci:

Response.TrySkipIisCustomErrors = true; 
Response.StatusCode = (int)HttpStatusCode.NotFound; 
Response.AddHeader("Location", "http://mysite.com/Invalid-File.aspx?" & Request.QueryString.ToString) 
+0

Pour une raison quelconque, la page ne redirige pas vers Invalid-File.aspx - la page File.aspx continue d'être affichée! Response.Redirect résultats dans la page redirigée ayant une erreur 302 :( –

+0

Ceci est bizarre - sur l'utilisation de votre code, le contenu de la page affichée provient de File.aspx, mais les en-têtes indiquent le code comme 404, et l'emplacement comme Invalid -File.aspx! –

+0

@Wild - Que voulez-vous * que le résultat soit? A 404 pour le client ne devrait pas se produire si vous redirigez vers le contenu réel, c'est ce que 301 ou 302 est pour. vous essayez de faire quelque chose de plus proche d'un 'Server.Transfer()' sur la réponse? –

0

vous pourriez potentiellement utiliser la méthode Application_Error puis faire response.redirect à la page souhaitée avec le code d'état correct

+0

Bonjour, L'erreur d'application ne se déclenche pas, car la page est redirigée vers http://monsite.com/Fichier.aspx?Name=Somme- que IIS7 ne réalise pas que la page n'existe pas. –

1

avez-vous essayez de définir la page d'erreur 404 dans l'administration IIS égal à ce que vous spécifiez dans le web.config? Je me demande si .net ne se lance pas dans le pipeline au bon moment.

+0

La page personnalisée 404 est déjà présente dans l'administrateur IIS dans la section des pages d'erreur .Net pour. –

+0

Vous avez donc modifié le paramètre dans Gestionnaire des services Internet (IIS)> IIS> Pages d'erreur? Je ne parle pas des pages d'erreur .Net - cela change juste votre web.config. – ScottE

+0

Je vois - pouvez-vous clarifier ce que vous vouliez dire? –

Questions connexes