2010-07-29 60 views
1

我有一個wcf服務,有時會產生錯誤,如「The InnerException消息是'在對象圖中可以序列化或反序列化的項的最大數目是'65536'」。我知道如何解決這個特定的問題,但現在我想創建一個只能將錯誤(和嚴重錯誤)保存到日誌的跟蹤。爲什麼我不能跟蹤我的WCF服務端的錯誤?

問題是我的日誌保存了一切(包括成功的調用)或根本沒有。所以我的問題是,我的web.config有什麼問題?

<system.diagnostics> 
    <trace autoflush="true" /> 
    <sources> 
     <source name="System.ServiceModel" propagateActivity="true" switchValue="Error"> 
      <listeners> 
       <add name="xml"> 
       </add> 
      </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add initializeData="C:\mylog.svclog" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      name="xml" /> 
    </sharedListeners> 
</system.diagnostics> 

我曾嘗試與switchValue的所有不同的組合,但沒有給我我想要(=捕捉錯誤,但沒有成功調用)的結果。

有沒有人有想法?

回答

1

如果您需要僅在服務端進行日誌記錄,則可能需要查看可以放入服務類的IErrorHandler接口。

這個接口將公開兩種方法

public bool HandleError(Exception error) 

public void ProvideFault(Exception error, MessageVersion ver, ref Message msg) 

這將讓你挖掘到發生在服務端的所有異常 - 那些登錄到自己的日誌文件,你應該罰款。

+0

啊,是的,你可能是對的,也許只是使用正常的錯誤跟蹤,並將這些錯誤與網站(我存儲在數據庫中)中的錯誤合併起來會更容易。 – Pete 2010-07-29 11:46:03

+0

我試過這個,它工作正常。 (並且我還了解到globala.asax Application_Error不能用於此目的) – Pete 2010-08-01 14:51:34

相關問題