2012-02-08 110 views
1

我想實現在NetFX Harmonics: Creating Streamlined, Simplified, yet Scalable WCF Connectivity可擴展的解決方案WCF

發現可擴展的解決方案WCF所以我的解決方案有4個項目

  • Contact.Service(服務和數據合同)
  • Contact.ServiceImpl(HostFactory和服務本身)
  • Contact.ServiceHost(Web.config和Person.svc)
  • Contact.ServiceClient

Contact.ServiceClient有實際調用服務的App.config和Program.cs。

的App.config

<configuration> 
    <appSettings> 
    <add key="PersonServiceActiveEndpoint" value="PersonServiceBasicHttpBinding" /> 
    </appSettings>  
    <system.serviceModel> 
    <client> 
     <endpoint name="PersonServiceBasicHttpBinding" 
       address="http://localhost:1031/Person.svc" 
       binding="basicHttpBinding" 
       contract="Contact.Service.IPersonService" /> 
    </client> 
    </system.serviceModel> 
</configuration> 

Program.cs的

BasicHttpBinding basicHttpBinding = new BasicHttpBinding(); 
      EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1031/Person.svc"); 
      IPersonService personService = new ChannelFactory<IPersonService>(basicHttpBinding, endpointAddress).CreateChannel(); 

      Person person = personService.GetPersonData("F488D20B-FC27-4631-9FB9-83AF616AB5A6"); 
      Console.WriteLine(person.FirstName); 

當我嘗試運行這個例子會拋出異常:

有沒有終點在http://localhost:1031/Person.svc聽那個可以接受消息。這通常是由不正確的地址或SOAP操作引起的。

P.S. Person.svc在我的Contact.ServiceHost項目中

<%@ ServiceHost Service="Contact.Service.PersonService" %> 

回答

0

什麼是服務主機的配置?聽起來像2個問題之一:

  • 服務主機沒有設置爲偵聽同一端口。
  • 主機應用程序並不是在所有的

運行我想,通過檢查服務主體項目的web.config文件,你可能會發現,它要麼是聽不同的端口,或者不是一切運行,因此不聽。

Visual Studio主機是否啓動並託管該服務?您通常會在時鐘旁邊的通知區域中彈出一個'toast'彈出窗口,說明主機正在運行,您可以看到它正在運行的端口。如果這種情況沒有發生,那麼您可能需要將其配置爲啓動主機項目以及客戶端。

爲了使客戶端和服務器在同一時間開始,你需要:

  • 右鍵單擊您的解決方案文件,並選擇設置啓動項目...
  • 選擇多啓動項目併爲您的客戶端和服務器項目選擇啓動,將其他設置設置爲無。
+0

我設置了多個啓動項目,沒有運氣。 彈出窗口出現錯誤,「無法直接啓動具有類庫輸出類型的項目」。 還有一件事,我改變了人。svc,現在它正在使用工廠<%@ ServiceHost Service =「Person.Service.PersonService」Factory =「Person.Service.PersonServiceFactory」%>你說得對,沒有啓動wcf服務,沒有任務彈出信息消息 – user1084557 2012-02-08 20:57:13

+0

什麼是servicehost項目的類型?它不應該是一個類庫。看起來像這是你的問題 – 2012-02-08 21:09:22

+0

我已經改變了Contact.Service項目,實際上我刪除並重新創建(現在insac dataclasslibrary選擇WCF服務庫)。在調試我有彈出窗口的信息:用法:WCFSVCHOST.exe /服務: user1084557 2012-02-08 22:04:44

相關問題