2009-05-04 14 views
2

私は自分のサイトのすべてのページから送られてきたデータを置き換える必要があります.Global.asaxでやっていると思います。これはこれまで私が試したことです:ASP.NET Global.asaxでの出力のキャプチャと置換

void Application_PreSendRequestContent(object sender, EventArgs e) 
{ 
    System.IO.StreamReader sr = new System.IO.StreamReader(Response.OutputStream); 
    String output = sr.ReadToEnd(); 

    Response.ClearContent(); 
    Response.Write("Testing.."); 
} 

しかし、これは私にArgumentExceptionを与えます。私は間違って何をしていますか?これを行うための良い方法はありますか?

おかげ

+0

どの行からArgumentExceptionが返されますか?例外にもっと詳しいメッセージがありますか? –

+0

StreamReaderコンストラクタは、ストリームを読み取れなかったことを示すArgumentExceptionをスローします。また、Application_BeginRequestイベントでもResponse.Filterからの読み込みを試みました。 – alexn

+1

修正を行う正しい方法は、応答フィルタによるものです。実際の応答を変更するためのカスタムストリームを作成することができます。このページの作業サンプルを確認することができますhttps://davidsekar.com/asp-net/modifying-the-static-files-with-a-server-value –

答えて

8

これを行うに任意のより良い方法はありますか?

HttpModuleがこのようなタスクに適しているかもしれません。

リクエストのレスポンスを変更する方法の例については、次の記事をご覧ください。Producing XHTML-Compliant Pages With Response Filters

+0

あなたの答えをありがとう、私は見に行くつもりですそれ。 – alexn

関連する問題