J'ai un ASP.Net web à fichier unique (un .ashx
le fichier contenant un IHttpHandler
mise en œuvre) qui doit être en mesure de retourner les erreurs comme des réponses à 500 Internal Server Error codes d'état. C'est relativement simple chose à faire en PHP:
header("HTTP/1.1 500 Internal Server Error");
header("Content-Type: text/plain");
echo "Unable to connect to database on $dbHost";
L'ASP.Net (C#) équivalent doit être:
Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
Context.Response.ContentType = "text/plain";
Context.Response.Write("Unable to connect to database on " + dbHost);
Bien sûr, cela ne fonctionne pas comme prévu; au lieu de cela, IIS intercepte les 500 code d'état, des ordures de tout ce que j'ai écrit à l' Response
objet, et envoie les informations de débogage ou une page d'erreur personnalisée, en fonction de la façon dont l'application est configurée.
Ma question: comment puis - je supprimer ce IIS comportement et d'envoyer des informations d'erreur directement à partir de mon IHttpHandler
mise en œuvre?
Cette application est un port de PHP; le côté client est déjà écrit, donc je suis bloqué avec cette spécification. L'envoi d'erreurs avec un code d'état 200, malheureusement, ne rentre pas dans le moule.
Idéalement, j'ai besoin de contrôler le comportement de la programmation, parce que cela fait partie d'un kit de développement logiciel nous voulons distribuer sans "modifier ce fichier" et "modifier ce paramètre IIS" notice complémentaire.
Merci!
Edit: Triés. Context.Response.TrySkipIisCustomErrors = true
a été le billet. Wow.