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?
-
16-09-2019 - |
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.
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