У меня есть однофайловая веб-служба 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
был билетом. Вау.