WCF错误 - 没有端点侦听

时间:2014-09-25 21:05:52

标签: c# wcf

我使用WCF在Windows服务(客户端)和winforms应用程序(服务主机)之间来回发送消息。直到最近,这已经奏效。现在,当客户端尝试通信时,我收到以下错误消息:

" 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:

<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#代码:

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();

请注意,所有代码都会编译并且服务确实运行,并且&#34;您已创建服务&#34;将基本地址键入Web浏览器时生成的页面。我在俯瞰什么?

1 个答案:

答案 0 :(得分:0)

在客户端端点配置中的app.config中:

  1. 看起来您的端点地址未指定托管端点代码的.svc文件。假设你的.svc文件名是ColumbineWCFService.svc,你的地址值将是

    http://localhost:8000/ColumbineWCFService/ColumbineWCFService.svc

  2. 您的合同未指定您的命名空间。假设您的命名空间是&#34; ColumbineWCFService&#34;你的合同将是&#34; ColumbineWCFService.IColumnbineWCFService&#34;

  3. 没有名为&#34; WSHttpBinding_IColumbineWCFService&#34;的绑定配置。虽然该参数不应该影响端点是否正在收听。

  4. 也就是说,请尝试以下app.config:

    <endpoint address="http://localhost:8000/ColumbineWCFService/ColumbineWCFService.svc"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IColumbineWCFService"
    contract="ColumbineWCFService.IColumbineWCFService" name="WSHttpBinding_IColumbineWCFService">
    

    如果这不起作用,请回来告诉我们您是否有针对WCF服务的web.config并发布。