我使用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浏览器时生成的页面。我在俯瞰什么?
答案 0 :(得分:0)
在客户端端点配置中的app.config中:
看起来您的端点地址未指定托管端点代码的.svc文件。假设你的.svc文件名是ColumbineWCFService.svc,你的地址值将是
http://localhost:8000/ColumbineWCFService/ColumbineWCFService.svc
您的合同未指定您的命名空间。假设您的命名空间是&#34; ColumbineWCFService&#34;你的合同将是&#34; ColumbineWCFService.IColumnbineWCFService&#34;
没有名为&#34; WSHttpBinding_IColumbineWCFService&#34;的绑定配置。虽然该参数不应该影响端点是否正在收听。
也就是说,请尝试以下app.config:
<endpoint address="http://localhost:8000/ColumbineWCFService/ColumbineWCFService.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IColumbineWCFService"
contract="ColumbineWCFService.IColumbineWCFService" name="WSHttpBinding_IColumbineWCFService">
如果这不起作用,请回来告诉我们您是否有针对WCF服务的web.config并发布。