Comment définir par programme Response.StatusCode différent de 200 OK dans l'application ASP.NET et servir encore contenu au client avec succès?

StackOverflow https://stackoverflow.com/questions/1473855

Question

Réglage Response.StatusCode = 404 ne sert pas le contenu ni sous IE8 ni Chrome? Il fonctionne dans Mozilla si je trouve étrange!

Faites la plus simple des choses - projet d'application web asp.net vide avec la page Default.aspx vide. En cas Page_Load utilisez ce qui suit:

protected void Page_Load( object sender, EventArgs e )
{
    Response.StatusCode = 404;
}

Ceci définit efficacement le code d'état de la demande actuelle à 404, sans aucun doute à ce sujet. Lors du rendu sous IE8 ou Chrome, ou peut-être quelques autres navigateurs aussi bien - je ne l'ai pas testé, la page réelle ne montre pas du tout. Ces navigateurs affichent leur défaut 404 pages d'erreur (par défaut ne IIS erreurs personnalisées). Exemple dans IE8:

The webpage cannot be found 
 HTTP 404  
   Most likely causes:
•There might be a typing error in the address.
•If you clicked on a link, it may be out of date. ... and so on ...

Ce que je veux vraiment faire le code est bien de servir page d'erreur 404 avec 404 d'erreur qui fait dire au navigateur ou le robot d'exploration ou celui que cette page n'existe pas - non seulement pour montrer un peu de fantaisie message d'erreur personnalisé avec le statut message 200 OK.

En utilisant Fiddler montre que je suis en fait servais vraiment la demande, mais le navigateur est totalement ignorer ?!

Ma question - comment puis-je mettre 404 code d'état et rendre encore le contenu de la page? Exemple - http://www.intel.com/invalidpage.wow . L'utilisation Fiddler montre que cette page est servi avec le code d'état 404.

Était-ce utile?

La solution

Par défaut IE montrer est page d'erreur si la réponse de l'erreur est inférieure à une quantité configurable. Je crois que le montant est de 512 octets, mais je vais essayer de trouver une confirmation à ce sujet. Donc, tout ce que vous devez faire est de mettre plus de contenu dans votre réponse.

EDIT: Ce blog décrit les limites. L'un des commentaires montre les paramètres de clé de Registre pour modifier ces valeurs. La clé est:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ ErrorThresholds

Autres conseils

Vous ne servez pas le contenu, vous définissez une page d'erreur personnalisée au niveau du serveur Web (IIS) ou dans le web.config dans le cas de asp.net

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top