2011-03-04 47 views
1

我已經在消耗大量的Web服務我的客戶端應用程序實現的WCF檢查員的名字。WCF客戶端檢查得到它調用Web服務或調用方法名稱或類型或某事

我使用這個檢查的記錄機制記錄從應用程序發送到這些網絡服務,他們給迴響應呼叫。

public class WcfClientInterceptor : IClientMessageInspector 
    { 

     protected static readonly ILog log4net = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

     private static readonly IMessageLogger Logger = new Log4NetLogger(); 

     private MessageLogEntry LogEntry;// = new MessageLogEntry(); 

     public void AfterReceiveReply(ref Message reply, object correlationState) 
     { 

      if (Logger.IsLogEnabled) 
      { 
       LogEntry.ResponseBody = reply.ToString(); 
       Logger.Log(LogEntry); 
      } 
     } 

     public object BeforeSendRequest(ref Message request, IClientChannel channel) 
     { 
      if (Logger.IsLogEnabled) 
      { 
       LogEntry = LogEntry ?? new MessageLogEntry(); 
       //instanceContext.GetServiceInstance().GetType().Name 
       //LogEntry.WebServiceIdentity = request.Headers.Action; 
       LogEntry.WebServiceIdentity = OperationContext.Current.IncomingMessageHeaders.Action; 
       LogEntry.RequestBody = request.ToString(); 
      } 
      return null; 
     } 
    } 

我的問題是我不知道什麼Web服務被調用。我想獲得一些對他們的引用並記錄下來。
這是工作request.Headers.Action的唯一方法,但它並不總是工作。大多數情況下,這是String.Empty。 OperationContext.Current爲空,我知道在客戶端是正常的。

有沒有得到那個被稱爲Web服務的名稱的任何其他方式? 或調用方法的名稱?或者其他的東西?

謝謝

回答

1

它與LogEntry.WebServiceIdentity = request.Headers.Action; 我犯了一個錯誤

相關問題