3

HttpServerUtility.Executean を実行しIHttpHandler、ハンドラー応答を a に書き込み、それをhttp 応答に解析できるようなものを使用したいと考えていますMemoryStream(機能的には、ヘッダーと返されたコンテンツにアクセスしたい)。

現在、HttpServerUtility.ExecuteメソッドにはTextWriterオブジェクトのパラメーターがあります (オブジェクトにすることができStringWriterます) が、これはテキスト/文字列の本文を返す要求にのみ対応しています。また、応答の content-type ヘッダーを読み取ることができません (テキスト/css 応答の場合など)。 . 実行したい画像を出力するハンドラーがあるとしたらStringWriter、これはバイナリデータを扱うため機能しません。

IHttpHandler基本的に、1 つ( a である可能性がありますSystem.Web.UI.Page) を別の内部で実行IHttpHandlerし、応答を a に保存したいと考えてい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 に答える