C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■87870 / 2階層)  ASPもしくはIISでhttpレスポンスボディを確認する方法
□投稿者/ abc (2回)-(2018/07/09(Mon) 13:45:53)
No87869 (WebSurfer さん) に返信
ご確認までして頂きありがとうございます。
現状報告としまして、レスポンスボデイが取得できることは確認できましたが実装で引っ掛かっている状態です。

・ウェブページは正常に表示されるが、ログ上ではobject movedとなってしまい、以降記録されない
・今の方法だとアプリケーションプールが統合モードでしか動かないが、クラシックモードで実現したい(できれば)

■ログ
[Request]2018/07/09 13:26:10:
http://localhost:8888/hoge.aspx
[Response]2018/07/09 13:26:13:
(意図する正常なhtml)
[Request]2018/07/09 13:26:17:
http://localhost:8888/hoge.aspx
[Response]2018/07/09 13:26:17:
<h tml><h ead><t itle>Object moved</t itle></h ead><b ody>
<h 2>Object moved to <a h ref="hoge.aspx">here</ a>.</h 2>
</b ody></html>
[Request]2018/07/09 13:26:17:
http://localhost:8888/hoge.aspx
[Response]2018/07/09 13:26:17:
(以降記録されず……)

■ソース
※OutputFilterStreamはご紹介頂いた下記URLのものをコピペしています。
https://stackoverflow.com/questions/1038466/logging-raw-http-request-response-in-asp-net-mvc-iis7#

public class Logger : IHttpModule
    {
     static readonly string responseLogPath = @"D:\test.txt";
     OutputFilterStream filter;

     public void Init(HttpApplication application)
     {
         application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
         application.EndRequest += (new EventHandler(this.Application_EndRequest));
     }

     public void Dispose()
     {
     }

     private void Application_BeginRequest(Object sender, EventArgs e)
     {
         HttpResponse response = HttpContext.Current.Response;
         WriteLog("[Request]" + DateTime.Now + ":" + Environment.NewLine + HttpContext.Current.Request.Url.ToString());

         filter = new OutputFilterStream(response.Filter);
         response.Filter = filter;
     }

     private void Application_EndRequest(object sender, EventArgs e)
     {
         WriteLog("[Response]" + DateTime.Now + ":" + Environment.NewLine + filter.ReadStream());
     }

     private void WriteLog(string log)
     {
         using (var sw = new StreamWriter(responseLogPath, true))
         {
             sw.WriteLine(log);
         }
     }
}


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: ASPもしくはIISでhttpレスポンスボディを確認する方法 /WebSurfer →Re[3]: ASPもしくはIISでhttpレスポンスボディを確認する方法 /WebSurfer
 
上記関連ツリー

ASPもしくはIISでhttpレスポンスボディを確認する方法 / abc (18/07/09(Mon) 08:54) #87867
Re[1]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / WebSurfer (18/07/09(Mon) 10:21) #87868
Re[1]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / WebSurfer (18/07/09(Mon) 12:35) #87869
  └ ASPもしくはIISでhttpレスポンスボディを確認する方法 / abc (18/07/09(Mon) 13:45) #87870 ←Now
    └ Re[3]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / WebSurfer (18/07/09(Mon) 14:41) #87871
      └ Re[4]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / abc (18/07/09(Mon) 17:55) #87872
        └ Re[5]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / abc (18/07/09(Mon) 18:16) #87874
          └ Re[6]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / WebSurfer (18/07/09(Mon) 18:46) #87875
            └ Re[7]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / PANG2 (18/07/10(Tue) 11:00) #87877
              └ Re[8]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / abc (18/07/10(Tue) 17:49) #87878
                └ Re[9]: ASPもしくはIISでhttpレスポンスボディを確認する方法 / WebSurfer (18/07/10(Tue) 19:46) #87880

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信