3

我想使用类似HttpServerUtility.Execute执行的东西IHttpHandler并将处理程序响应写入 aMemoryStream然后可以解析为 http 响应(从功能上讲,我希望访问标头和返回的内容)。

目前该HttpServerUtility.Execute方法有一个TextWriter对象的参数(可以是一个StringWriter对象),但这仅适用于返回文本/字符串主体的请求,我也无法读取响应的内容类型标头(例如文本/css响应) . 如果说我有一个要执行的处理程序来输出图像,StringWriter那么它将无法工作,因为它处理的是二进制数据。

基本上我想在另一个内部执行一个IHttpHandler(可能是 a System.Web.UI.PageIHttpHandler并将响应存储在一个MemoryStream.

对此的任何帮助将不胜感激。

谢谢。

4

1 回答 1

2

也许您可以直接在 IHttpHandler 对象上调用 ProcessRequest 方法,并将您自己的 http 上下文与您自己的响应对象一起传递给它。我不确定,但我认为 http 响应的 BinaryWrite 方法使用了传递给它的构造函数的 TextWriter 对象的输出流。因此,如果您在 TextWriter 中设置了内存流,则可以将其用作输出。

所以:

  • 创建内存流
  • 创建 StreamWriter 并将内存流传递给构造函数
  • 创建一个 HttpResponse 并将创建的 StreamWriter 传递给它
  • 使用已创建的 HttpResponse 和已创建的或当前的 http 请求创建 HttpContext
  • 调用 IHttpHandler.ProcessRequest
于 2013-07-08T11:26:29.313 回答