Выполнить 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
Другие вопросы по тегам