IIS 7 интегрированный конвейер - изменение ответа HTML
Я пытаюсь написать расширение IIS, которое изменяет HTML-ответ для запроса при его отправке обратно клиенту. Я знаю, что традиционно это будет работа фильтра ISAPI, однако я являюсь разработчиком.Net, и я читал, что реализация фильтра ISAPI в.Net - плохая идея.
В нескольких местах я читал, что новый блестящий интегрированный конвейерный режим IIS 7 теперь должен позволять мне писать модули в.Net, которые обеспечивают ту же функциональность, что и фильтры ISAPI, путем реализации IHttpModule, однако я не могу понять, как изменить HTML-ответ для запросов, не относящихся к ASP.Net.
Единственный ресурс, который я нашел о том, как я могу это сделать, - это эта статья, однако она не работает для ресурсов, не относящихся к ASP.Net, или в тех случаях, когда HttpApplication.CompleteRequest
вызывается, даже если включен режим интегрированного конвейера.
Как я могу написать модуль IIS в C#, который позволяет мне изменять html / data ответа на все запросы?
2 ответа
Я думаю, вам придется направлять все ваши запросы через модуль ASP.NET.
Не уверен, что это действительно выполнимо с.NET, но зацените это http://aspnetresources.com/articles/CustomErrorPages esp. часть об установке HttpModule - возможно, это больше зависит от того, как IIS видит ваш модуль.
Хотя я и с вами, что.NET-ISAPI-Filter - плохая идея, я все же проверил бы это, чтобы увидеть, насколько это повлияет на ваш случай.
Действительно сложным вариантом было бы реализовать локальный прокси-сервер (т. Е. Либо вы можете написать сервер на основе HttpListener, либо использовать библиотеку для упрощения реализации), который прослушивает порты, которые должны быть открыты, и реконфигурирует IIS для использования других портов / localhost только... таким образом, вы можете фильтровать все, что хотите... хотя это тоже повлияет на производительность.