我使用WCF在Windows服務(客戶端)和Winforms應用程序(服務主機)之間來回發送消息。直到最近這個工作。現在,當客戶端嘗試通信時,我收到以下錯誤消息:WCF錯誤 - 沒有端點偵聽
「沒有端點偵聽到http://localhost:8000/ColumbineWCFService
可以接受該消息,這通常是由不正確的地址或SOAP操作引起的。
我已經花了整整一天的時間在這個論壇上提到類似的問題,但一直沒能解決,希望如果我從我的項目提供的具體細節答案會跳出來的人。
下面的代碼片斷(客戶端)發生錯誤:
var pingHost = new ColumbineWCFServiceReference.ColumbineWCFServiceClient();
pingHost.Open();
if (pingHost.AreYouThere() == true) return true; //<-- this is the line where the "no endpoint listening" error occurs
客戶端側的app.config:
ServiceHost selfHost = null;
Uri baseAddress = new Uri("http://localhost:8000/ColumbineWCFService");
selfHost = new ServiceHost(typeof(ColumbineWCFService), baseAddress);
selfHost.AddServiceEndpoint(typeof(IColumbineWCFService), new WSHttpBinding(), "ColumbineWCFService");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);
selfHost.Open();
:在主機側
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IColumbineWCFService" />
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8000/ColumbineWCFService/ColumbineWCFService"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IColumbineWCFService"
contract="IColumbineWCFService" name="WSHttpBinding_IColumbineWCFService">
<identity>
<userPrincipalName value="Nathan-PC\Nathan" />
</identity>
</endpoint>
</client>
</system.serviceModel>
C#代碼
請注意,所有的代碼編譯和服務都會按照「您已經創建了服務」頁面證明的那樣運行n基地址被輸入到網頁瀏覽器中。我忽略了什麼?
您可以共享整個columbineWCFServiceClient代碼,而不僅僅是那麼小的一部分嗎?我認爲AreYouThere()方法定義有問題。另外,您是否嘗試過使用WCF測試客戶端來聯繫該方法? Visual Studio有一個客戶端可以用來聯繫它。 – Nzall 2014-09-25 21:28:33
不知道是否可以解釋它,但客戶端的app.config中的「http:// localhost:8000/ColumbineWCFService/ColumbineWCFService」與主機中的「http:// localhost:8000/ColumbineWCFService」之間似乎有差異。 – 2014-09-25 21:53:25