2015-06-23 19 views
2

我有簡單的Wcf應用程序與客戶端和主機。整個WCF架構是默認的,客戶端邏輯是在添加服務引用後由Visual Studio添加的。應用程序工作很長時間,突然它今天停止工作。在調試期間,我看到問題在於,客戶端無法打開通道。沒有例外,調試器只是不進入下一個執行步驟。主機通常會打開服務。我沒有改變代碼中的任何東西。我嘗試編寫新的Wcf應用程序,並且因爲相同的原因而無法工作。Wcf應用程序無法打開通道

谷歌沒有幫助我。我會很感激任何建議如何解決這個問題。 :)

下面是應用我所提到的部分代碼:

[ServiceContract] 
public interface iClientsQueries 
{ 
    [OperationContract] 
    resRegisterUser RegisterUser(reqRegisterUser request); 
} 

客戶端:

public class ClientLogic 
{ 
    User CurrentUser { get; set; } 

    public ClientLogic(string phoneNumber) 
    { 

     client = new iClientsQueriesClient("WSHttpBinding_iClientsQueries"); 

     CurrentUser = new User() { PhoneNumber = phoneNumber, IsRegistered = true }; 
    } 

    async public void RegisterUser() 
    { 
     var req = new reqRegisterUser() { QueryAuthor = CurrentUser }; 

     resRegisterUser res; 

     try 
     { 
      res = client.RegisterUser(req); 
      notFinished = false;  
     } 
     catch (Exception ex) 
     { 
      notFinished = true; 
     } 
    } 
} 

主機端:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class HostLogic : iClientsQueries 
{ 

    public void StartHostng() 
    { 

     Uri hostAddress = new Uri(UriAddress); 

     try 
     { 
      host = new ServiceHost(this, hostAddress); 

      host.AddServiceEndpoint(typeof(iClientsQueries), new WSHttpBinding(), "TestService"); 

      ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
      smb.HttpGetEnabled = true; 

      host.Description.Behaviors.Add(smb); 

      host.Open(); 

      HostOn = true; 
     } 
     catch (Exception ex) 
     { 
      LogsWriter.WriteExceptionLog(ex); 
      HostOn = false; 
      host.Abort(); 
     } 
    } 

    public void StopHosting() 
    { 
     if (host != null) 
      host.Close(); 

     HostOn = false; 
    } 

    public resRegisterUser RegisterUser(reqRegisterUser request) 
    { 
     // LOGIC HERE 
    } 
} 
+0

我想到的第一件事情是防火牆關閉了嗎? – Fabjan

+0

@Fabjan,我試過關閉Antyvirus和Firewall。不幸的是,沒有任何改變。 –

+0

看起來像是阻止客戶端打開服務器的通道。但奇怪的是沒有拋出異常。你能提供一個你的代碼的例子嗎? – Fabjan

回答

0

我最常做的時候這樣的東西發生這種情況是配置客戶端和服務器上的WCF消息日誌記錄,並希望出現。在某些情況下,Windows事件日誌包含可能有所幫助的日誌條目。

要配置WCF消息日誌記錄,您需要按照here所述更新App.config文件。

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
     <add name="messages" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData="c:\logs\messages.svclog" /> 
     </listeners> 
    </source> 
    </sources> 
</system.diagnostics> 

<system.serviceModel> 
    <diagnostics> 
    <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="false" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="false" 
     maxMessagesToLog="3000" 
     maxSizeOfMessageToLog="2000"/> 
    </diagnostics> 
</system.serviceModel> 
+0

這是客戶端應用程序的日誌:[link](http://s15.postimg.org/4jtybi73f/serv.png)。無法讀取任何內容,看起來像請求已發送。服務器應用程序尚未創建svclog文件。 –

相關問題