Модификация ответа в модуле HTTP - PullRequest
1 голос
/ 18 июня 2011

Я построил модуль http в C #, который просто переопределяет EndRequest жизненного цикла, проверяет код состояния заголовка ответа и изменяет код ответа, если это необходимо. Что-то вроде:

HttpContext context = ((HttpApplication)source).Context;
if (context.Response.StatusCode == 200)
{
    context.Response.StatusCode = 404;
}

Мне кажется, что это нормально работает, когда я тестирую его на локальном хосте (настоящий IIS), но когда я включаю доступ в интрасеть и тестирую с другого компьютера, каждый раз происходит сбой.

Ошибка при тестировании через другой компьютер:

«Сервер не может установить состояние после отправки заголовков HTTP.»

Я также заметил, что запрашивает один и тот же файл дважды, тогда как локально он запрашивает файл только один раз. Я слышал, как кто-то что-то говорил о буферизации вывода, но я также попытался установить для свойства OutputBuffer ответа BeginRequest значение true и получил те же результаты.

Мысли

1 Ответ

4 голосов
/ 18 июня 2011

Вам нужно изменить ответ перед отправкой заголовков. Мне никогда не приходилось это делать, но я бы предположил, что правильным событием будет PreSendRequestHeaders. ссылка

Вот пример установки заголовков в этом событии.

Если это событие не работает для вас, проверьте некоторые события после пост-процесса обработчика в конвейере: http://blogs.msdn.com/b/carloc/archive/2007/12/19/application-page-and-control-lifecycle.aspx Будьте осторожны, поскольку вам, возможно, придется переписать свой код для интегрированного IIS 7 трубопровод.

...