2010-12-10 139 views
1

我有一個WCF服務,當我調用它的字符串回來null,我不知道爲什麼!WCF服務方法返回null

這是調用代碼:

new Thread(() => 
      { 
       string returned = _client.Service.GetString(); 
       this.Dispatcher.BeginInvoke((Action)(() => MessageBox.Show(returned))); 
      }).Start(); 

這是服務實現:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)] 
class MyService: ServiceBase, IMyService 
{ 
    public string GetString() 
    { 
     return "Returned"; 
    } 

這是接口:

[ServiceContract] 
public interface IMyService: IServiceBase 
{ 
    [OperationContract] 
    string GetString(); 
} 

調用代碼是剛剛回來與空,但客戶端連接到服務罰款,我錯過了什麼?

+0

您可以發佈顯示_client是什麼的代碼嗎? – 2010-12-10 10:26:16

+0

目前我無法編輯,但_client.Connect()被調用,它會創建channelfactory和bindingelements並調用CreateChannel(),並且工作正常,只要測試過! – Grace 2010-12-10 10:40:25

回答

1

如果你還沒有,你可以配置WCF跟蹤,並從日誌文件中獲取很多。不知道配置是什麼樣的,或者_client是如何構建的,我不能說出了什麼問題。你在這裏發佈的代碼看起來應該可以正常工作。

<configuration> 
    <system.diagnostics> 
     <sources> 
      <source name="System.ServiceModel" 
        switchValue="Information, ActivityTracing" 
        propagateActivity="true"> 
      <listeners> 
       <add name="traceListener" 
        type="System.Diagnostics.XmlWriterTraceListener" 
        initializeData= "WcfTraces.svclog" /> 
      </listeners> 
     </source> 
     </sources> 
    </system.diagnostics> 
</configuration> 

添加此您的app.config或web.config文件將創建在同一個目錄中各類數據的配置文件WcfTraces.svclog文件。您應該只需雙擊日誌文件即可使用Microsoft Service Trace Viewer打開它。

Configure WCF Tracing

+0

我做到了這一點,並沒有出現任何錯誤。我改變了方法來返回一個我創建的對象而不是字符串,它工作得很好!奇怪的! – Grace 2010-12-10 15:03:19