Как отправить код состояния 500 в ASP.Net и по-прежнему писать в ответ?

У меня есть однофайловая веб-служба ASP.Net (файл .ashx , содержащий реализацию IHttpHandler ), которая должна иметь возможность возвращать ошибки в качестве ответов с Коды состояния 500 Внутренняя ошибка сервера . Это относительно просто сделать в PHP:

header("HTTP/1.1 500 Internal Server Error");
header("Content-Type: text/plain");
echo "Unable to connect to database on $dbHost";

Эквивалент в ASP.Net (C #) должен быть:

Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
Context.Response.ContentType = "text/plain";
Context.Response.Write("Unable to connect to database on " + dbHost);

Конечно, это работает не так, как ожидалось; вместо этого IIS перехватывает код состояния 500, удаляет все, что я написал, в объект Response и отправляет либо отладочную информацию, либо пользовательскую страницу ошибки, в зависимости от того, как настроено приложение.

Мой вопрос - как я могу подавить это поведение IIS и отправить информацию об ошибке непосредственно из моей реализации IHttpHandler ?

Это приложение является портом PHP; клиентская сторона уже написана, так что я по сути придерживаюсь этой спецификации. Отправка ошибок с кодом состояния 200, к сожалению, не соответствует шаблону.

В идеале мне нужно управлять поведением программно, потому что это часть SDK, который мы хотим распространять без каких-либо " отредактируйте этот файл "и" изменить этот параметр IIS "дополнительные инструкции.

Спасибо!

Изменить : Сортировано. Context.Response.TrySkipIisCustomErrors = true был билетом. Вау.

64
задан pnuts 19 November 2015 в 01:32
поделиться