Я построил модуль http в C#, который просто переопределяет EndRequest жизненного цикла, проверяет код состояния заголовка ответа и изменяет код ответа, если это необходимо. Что-то вроде:Модификация ответа в модуле HTTP
HttpContext context = ((HttpApplication)source).Context;
if (context.Response.StatusCode == 200)
{
context.Response.StatusCode = 404;
}
Это, кажется, работает хорошо для меня, когда я проверить его на локальном хосте (реальный IIS), но когда я включаю доступ к внутренней сети и тест с другого компьютера он не каждый раз.
ошибки я вижу, когда я проверяю с помощью другого компьютера:
«Статус сервера не может установить после того, как HTTP заголовков будет отправлена»
Я также заметил, что запрашивает один и тот же файл дважды, тогда как локально он запрашивает только один файл. Я слышал, что кто-то сказал что-то о выходной буферизации, но я также попытался установить на ответ BeginRequest OutputBuffer значение true и получил те же результаты.
Мысли?
Просто подумал, что я вернусь и закрою это. Здесь было две проблемы, первая из которых решила ваше предложение. Вторая проблема связана с конвейером, но не с asp.net. IIS имеет «функцию» для возврата определенных страниц ошибок при отправке определенных кодов состояния. Это происходит ПОСЛЕ обработки, выполняемой в .NET, но вы можете отключить ее. Если вы включите «подробные ошибки» и удалите обработчик для кода состояния, вы получите исходное содержимое страницы, которое не будет изменено. По умолчанию это только локально. – pinvoke