У меня есть однофайловая веб-служба ASP.Net(файл .ashx
, содержащий реализацию IHttpHandler
), которая должна иметь возможность возвращать ошибки в виде ответов с статусом 500 Internal Server Error коды. Это довольно простая задача в PHP:
header("HTTP/1.1 500 Internal Server Error");
header("Content-Type: text/plain");
echo "Unable to connect to database on $dbHost";
Эквивалент ASP.Net(С#):
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
был билет. Ничего себе.