2013-04-03 65 views
0

我剛學WCF,我試圖創建一個WCF服務,但我不斷收到此異常:簡單的WCF服務結果

未處理的異常:System.ServiceModel.EndpointNotFoundException:沒有 端點傾聽http://localhost:8733/Person/,可以接受messa ge。這通常是由不正確的地址或SOAP操作引起的。有關更多詳細信息,請參見InnerExcept (如果存在)。 ---> System.Net.WebException:無法連接到 克拉到遠程服務器---> System.Net.Sockets.SocketException:C 無連接烏爾德作出,因爲目標機器積極地拒絕它127.0.0.1:8733

我開始通過創建一個WCF服務Library.I定義我的服務合同,合同數據配置here.And端點女巫是這樣的:

<service name="SelfHosting.PersonContract"> 
    <endpoint address="" binding="basicHttpBinding" contract="SelfHosting.IPersonContract"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8733/Person/" /> 
     </baseAddresses> 
    </host> 
    </service> 

已經添加了這兩個端點我只是將它們配置爲符合我的需求。我不確定mex端點是如何使用的,所以我跳着一個人可以告訴我。

然後我創建了一個控制檯應用程序,我加入到service.I參考已初始化的服務的一個實例,然後我tryed調用它:

static PersonContractClient client = new PersonContractClient(); 

static void Main(string[] args) 
{ 
     var persons = client.GetPersons(); 
     foreach (var personData in persons) 
     { 
      Console.WriteLine(personData.Name); 
      Console.WriteLine(personData.Email); 
     } 
    } 

我還沒有設置客戶端上的任何端點因爲從我所知道的,當你添加後我阿迪引用添加到服務。這參考它們添加全自動:

<endpoint address="http://localhost:8733/Person/" binding="basicHttpBinding" 
      bindingConfiguration="BasicHttpBinding_IPersonContract" contract="PersonNamespace.IPersonContract" 
      name="BasicHttpBinding_IPersonContract" /> 

我的解決方案還包含有數據,這是我開始使用實體的另一個項目框架。我不知道這是否與問題有關。

我在這裏做錯了什麼?

+0

Mex用於發送模式,因此您可以使用代碼生成器,如svcutil或WcfTestClient.exe。你會拿出這個生產系統。 –

+0

另外,你是如何託管HTTP服務? IIS或通過控制檯應用程序或Windows服務? –

+0

對我來說,例外情況是說服務停止。您是否部署了它,還是在運行或客戶端代碼時單獨運行它? – Marco

回答

0

我有類似的問題,當我試圖創建一個使用自己的主機在一個控制檯應用程序雙工WCF通信。以下示例http://adamprescott.net/2012/08/15/a-simple-wcf-service-callback-example/明確表示。這是常見的得到錯誤

「未處理的異常:System.ServiceModel.EndpointNotFoundException:沒有終點的http://localhost:8733/Person/聽,可以接受MESSA GE這通常是由不正確的地址或SOAP行動造成參見InnerExcept離子。如果存在,獲取更多細節---> System.Net.WebException:無法連接到遠程服務器---> System.Net.Sockets.SocketException:由於目標機器主動拒絕而無法建立連接it 127.0.0.1:8733「

在嘗試在客戶端控制檯應用程序中發現服務引用之前,需要通過右鍵單擊文件夾位置>複製中的.exe來啓動服務的可執行文件(.exe)服務app.config中的baseaddress中的uri粘貼到添加服務引用對話框中,然後單擊確定...修復它。我希望這可以幫助別人,因爲問題有點老了。

0

而不是URL中的'localhost'使用端點的IP地址。