Я пытаюсь проверить полученный HTTP-запрос сервисом. Я хочу проверить, присутствуют ли все требуемые заголовки и т. Д. Если нет, я хотел бы создать исключение, которое в каком-то месте установило бы правильный код ответа и строку состояния ответа. Я не хочу перенаправлять пользователя на какую-либо конкретную страницу с ошибкой, просто отправьте ответ.
Интересно, где мне поместить код? Мое первое предположение заключалось в том, чтобы проверять запросы в Application_BeginRequest
, генерировать исключение при ошибке и обрабатывать его в Application_Error
.
Например:
public void Application_BeginRequest(object sender, EventArgs e)
{
if(!getValidator.Validate(HttpContext.Current.Request))
{
throw new HttpException(486, "Something dark is coming");
}
}
public void Application_Error(object sender, EventArgs e)
{
HttpException ex = Server.GetLastError() as HttpException;
if (ex != null)
{
Context.Response.StatusCode = ex.ErrorCode;
Context.Response.Status = ex.Message;
}
}
Очевидно, в таких случаях Visual Studio жалуется о необработанном исключении в Application_BeginRequest
. Это работает, поскольку данный код возвращается клиенту, но я чувствую, что с этим подходом что-то не так.
[Изменить]: Я удалил второй вопрос о настраиваемой строке состояния, поскольку эти вопросы на самом деле не связаны.
Спасибо за помощь.