2013-12-18 30 views
2

我的應用程序真的很難。 這是一個簡單的應用程序,使用MVC模式& ET,也有一個WCF項目。如何調試WCF

當我運行「本機」控制檯應用程序時,它運行得像一個魅力,但是當我通過WCF運行時出了點問題,我得到了System.Collections.Generic.KeyNotFoundException,所以我想看看它來自哪裏。 Console.WriteLine()沒有工作,所以我正在尋找其他方式如何打印WCF運行時發生的情況。

事情是WCF工作肯定,簡單的方法如listCustomers()返回沒有問題,但最複雜的,FindPathFromAtoB()由於某種原因失敗。但是,沒有WCF它工作沒有問題。

+0

爲什麼你不能在本地運行它,並通過調試器遵循它的任何原因? – Jason

+0

如果它真的是一個簡單的應用程序,切換到ASP.NET Web API,您可以輕鬆地進行調試。 Web API本身是開源的,調試它比WCF容易得多。 –

+0

@LexLi我不能,這是我的大學項目。我們必須使用WCF。 – Nikola

回答

1

你可以打開WCF日誌記錄,這將幫助你找到問題的根本。

在您的服務配置文件中,添加以下部分。這將設置2個聽衆。他們目前設置爲只記錄錯誤,但您可以更改switchValue的值以記錄更多。

您還需要更改將創建日誌的路徑(initializeData屬性)。該服務的工作進程需要具有對該路徑的寫入訪問權限。

<system.diagnostics> 
    <!--set autoflush to false to increase performance --> 
    <trace autoflush="true"/> 
    <sources> 
     <!-- message logging --> 
     <source name="System.ServiceModel.MessageLogging" logKnownPii="false" switchValue="Error"> 
      <listeners> 
       <add name="ServiceModelMessageLoggingListener"> 
        <filter type=""/> 
       </add> 
      </listeners> 
     </source> 
     <!--service model tracing--> 
     <source name="System.ServiceModel" switchValue="Error" propagateActivity="true"> 
      <listeners> 
       <add name="ServiceModelTraceListener"/> 
      </listeners> 
     </source> 
    </sources> 
    <!-- worker process account needs write access to the configured tracing directories --> 
    <sharedListeners> 
     <add name="ServiceModelMessageLoggingListener" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\messages.svclog" traceOutputOptions="Timestamp"> 
      <filter type=""/> 
     </add> 
     <add name="ServiceModelTraceListener" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\trace.svclog" traceOutputOptions="Timestamp"> 
      <filter type=""/> 
     </add> 
    </sharedListeners> 
</system.diagnostics> 

查看更多MSDN

1

Szymon答案不完整。 WCF日誌可能非常冗長,對於新手WCF開發人員來說難以不可能消化。有一種名爲服務跟蹤查看器的工具,您需要使用它來解釋服務中的日誌。

這裏有一個很好的鏈接...

http://msdn.microsoft.com/en-us/library/aa751795(v=vs.110).aspx

此外,如果你的客戶是一個WCF客戶端,你可能會想在客戶端和服務器上設置日誌,你可以加載日誌客戶端和服務器都加入服務跟蹤查看器並查看整個對話。

+0

是的,你是對的。我忘了那一點。 – Szymon