2009-04-13 44 views
4

我在開發機器上運行IIS 5。我有一個運行在其上的asp.net 3.5 web服務,我從同一臺服務器上運行的其他web應用程序調用。我的服務正在返回一個錯誤500內部服務器錯誤,我正在排除故障。我的請求是通過System.Net.HttpWebReques t對象發送的,從客戶的角度看它是有效的。如何記錄進入IIS的HTTP請求

我想從服務器的角度看到原始傳入的HTTP請求。由於該服務正在環回調用,因此我無法使用Wireshark進行查看。

IIS日誌記錄顯示請求標題,但不顯示帖子內容。

關於如何在IIS中看到完整的原始傳入HTTP請求的任何建議?

謝謝

回答

3

我想你想添加一個HTTPModule進行日誌記錄。 Here's在ASP.NET模塊和處理程序上的一篇不錯的文章:

這樣,當你想禁用日誌記錄時,你可以從你的web.config文件中刪除/註釋它。

0

最好的辦法是在不同的端口上運行您的每個Web應用程序,然後使用類似Fiddler的東西來創建您想要觀看的端口的代理。這將監視來自您的特定應用程序的所有流量。

5

您是否嘗試過使用Fiddler?只需使用您的機器名稱而不是本地主機。

+1

提琴手工作,如果你從一個瀏覽器查詢。來自我自己的應用程序的Webservice調用不起作用。 – 2009-11-20 14:13:52

0

這裏是我們用來記錄HTTP POST請求數據的自定義HTTP模塊的代碼。

using System; 
using System.Web; 

namespace MySolution.HttpModules 
{ 
    public class HttpPOSTLogger : IHttpModule 
    { 

     public void Dispose() 
     { 
     } 

     public void Init(HttpApplication context) 
     { 
      context.BeginRequest += new EventHandler(context_BeginRequest); 
     } 

     private void context_BeginRequest(object sender, EventArgs e) 
     { 
      if (sender != null && sender is HttpApplication) 
      { 
       var request = (sender as HttpApplication).Request; 
       var response = (sender as HttpApplication).Response; 

       if (request != null && response != null && request.HttpMethod.ToUpper() == "POST") 
       { 
        var body = HttpUtility.UrlDecode(request.Form.ToString()); 
        if (!string.IsNullOrWhiteSpace(body)) 
         response.AppendToLog(body); 
       } 
      } 
     } 

    } 
} 

不要忘記在你的應用程序的web.config中註冊它。

使用system.WebServer節IIS集成模型

<system.webServer> 
    <modules> 
     <add name="HttpPOSTLogger" type="MySolution.HttpModules.HttpPOSTLogger, MySolution.HttpModules" /> 
    </modules> 
</system.webServer> 

的IIS經典模式

<system.web> 
    <httpModules> 
     <add name="HttpPOSTLogger" type="MySolution.HttpModules.HttpPOSTLogger, MySolution.HttpModules"/> 
    </httpModules> 
</system.web> 

IIS日誌使用的System.Web部分應用模塊:

::1, -, 10/31/2017, 10:53:20, W3SVC1, machine-name, ::1, 5, 681, 662, 200, 0, POST, /MySolution/MyService.svc/MyMethod, -, 

IIS日誌應用模塊後:

::1, -, 10/31/2017, 10:53:20, W3SVC1, machine-name, ::1, 5, 681, 662, 200, 0, POST, /MySolution/MyService.svc/MyMethod, {"model":{"Platform":"Mobile","EntityID":"420003"}}, 

爲文章全文:

https://www.codeproject.com/Tips/1213108/HttpModule-for-logging-HTTP-POST-data-in-IIS-Log