WCF部署遇EndpointNotFoundException未处理问题求助(附代码片段)
解决WCF服务EndpointNotFoundException异常的实用方案
兄弟,我之前部署WCF服务连接SQL Server和C#应用时也踩过这个坑,EndpointNotFoundException大多是端点配置或服务连通性出了问题,咱们一步步来排查:
1. 核对客户端与服务端的端点配置
首先必须确保两端的**地址(address)、绑定(binding)、契约(contract)**完全匹配:
- 服务端app.config里的端点示例:
<endpoint address="" binding="basicHttpBinding" contract="WCFCrud.IService1">
- 客户端配置里的端点地址要精准,比如本地运行的服务地址可能是
http://localhost:xxxx/Service1.svc,别写错端口或路径,哪怕少个斜杠都可能出问题。
2. 确认WCF服务是否正常启动
- 直接在浏览器里访问服务的
.svc文件地址,如果能看到WCF的服务描述页面,说明服务正常;如果打不开,先排查服务启动问题:- 若是IIS托管,检查应用池是否启动,站点配置是否正确;
- 若是自托管,确保代码里正确初始化并启动了服务宿主,比如:
using (ServiceHost host = new ServiceHost(typeof(Service1))) { host.Open(); Console.WriteLine("服务已启动,按任意键停止..."); Console.ReadKey(); host.Close(); }
3. 排查防火墙与端口占用
- 服务端口可能被防火墙拦截,试试临时关闭防火墙测试,或者在防火墙上添加对应端口的入站规则;
- 用命令行执行
netstat -ano,检查服务使用的端口是否被其他程序占用,要是被占了,赶紧改服务的端口号。
4. 验证契约定义的一致性
你提供的IService1接口里有Insert方法,要确保:
- 服务端的实现类(比如
Service1)和接口定义完全匹配; - 客户端如果是通过添加服务引用生成的,记得更新服务引用,避免因契约版本不一致导致无法识别端点。
5. 排查SQL Server连接对服务启动的影响
虽然异常是EndpointNotFound,但有时候服务启动失败是因为SQL Server连接出问题,导致服务无法初始化。可以在服务的构造函数或启动代码里加日志,看看是不是连接字符串错误、SQL Server不允许远程连接,或者账号权限不够。
内容的提问来源于stack exchange,提问作者Cookistador
相关产品推荐
相关产品推荐

