Выполнить IHttpHandler для MemoryStream
Я хочу использовать что-то вроде HttpServerUtility.Execute
выполнить IHttpHandler
и напишите ответ обработчика MemoryStream
затем его можно проанализировать в http-ответе (функционально я хочу получить доступ к заголовкам и возвращаемому контенту).
В настоящее время HttpServerUtility.Execute
Метод имеет параметр для TextWriter
объект (может быть StringWriter
объект), но это обслуживает только запросы, которые возвращают текстовое / строковое тело, также я не могу прочитать заголовок типа содержимого ответа (скажем, для ответа text / css). Если, скажем, у меня был обработчик, который я хотел выполнить, который выводит изображение StringWriter
не будет работать, так как это имеет дело с двоичными данными.
В основном я хочу выполнить один IHttpHandler
(может быть System.Web.UI.Page
) внутри другого IHttpHandler
и сохранить ответ в MemoryStream
,
Любая помощь с этим будет оценена.
Благодарю.
1 ответ
Возможно, вы можете вызвать метод ProcessRequest непосредственно для объекта IHttpHandler и передать его в свой собственный http-контекст с вашим собственным объектом ответа. Я не уверен, но я думаю, что метод BinaryWrite ответа http использует поток вывода объекта TextWriter, который передается в его конструктор. Так что, если у вас установлен поток памяти в TextWriter, вы можете использовать его в качестве вывода.
Так:
- Создать MemoryStream
- Создать StreamWriter и передать поток памяти в конструктор
- Создайте HttpResponse и передайте ему созданный StreamWriter
- Создайте HttpContext с созданным HttpResponse и созданным или текущим HTTP-запросом.
- Вызвать IHttpHandler.ProcessRequest