.Net端口共享:EndpointNotFound报错排查求助
问题分析与调试方案
可能的原因
- 端口监听进程不匹配:
telnet host2 1001能连通仅说明1001端口被监听,但监听进程可能不是Service2的宿主进程,导致客户端请求被无关进程拒绝。 - WCF终结点配置不匹配:Service2服务端的地址、绑定、契约三者中某一项与客户端配置不一致。比如服务端仅绑定了
localhost而非host2的可访问IP,或契约命名空间/名称与客户端不匹配,服务端无法识别请求从而主动拒绝。 - Service2未正常启动:即使端口被监听,Service2本身可能未完成启动、已崩溃,或未正确注册终结点。
- 端口共享配置错误:若Service2启用了Net.Tcp端口共享但未启动
Net.Tcp Port Sharing Service,或服务端绑定配置未开启端口共享,会导致连接失败。 - 防火墙应用层过滤:防火墙允许TCP握手但拦截了WCF协议的特定数据(如SOAP消息、加密流量),服务端收到连接后无法解析请求,主动拒绝。
调试步骤
确认1001端口的监听进程
在host2执行命令:netstat -ano | findstr ":1001"找到输出中的PID,通过任务管理器查看该PID对应的进程是否为Service2的宿主进程(如
w3wp.exe、自定义服务进程)。若不是,需停止占用端口的进程或修改Service2的端口配置。检查Service2的WCF配置
查看服务端配置文件中的<system.serviceModel>节点:- 确认
<services>下Service2的终结点地址是否包含host2的可访问IP(或使用相对地址配合正确的<baseAddresses>); - 验证绑定类型为
netTcpBinding,且绑定的安全模式、传输设置与客户端完全一致; - 核对契约的名称、命名空间与客户端引用的契约完全匹配。
- 确认
启用WCF跟踪日志排查服务端细节
在Service2的配置文件中添加跟踪配置:<system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"> <listeners> <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\Logs\Service2Trace.svclog" /> </listeners> </source> </sources> </system.diagnostics>重启Service2后,从host1发起请求,使用WCF Service Trace Viewer打开生成的
svclog文件,分析服务端是否接收请求、拒绝的具体原因。测试host2本地访问Service2
在host2本地尝试访问net.tcp://localhost:1001/Service2(或host2的内网/公网IP):- 若本地能正常连接,说明服务端仅绑定了localhost,需修改配置为0.0.0.0或host2的实际IP;
- 若本地也连接失败,说明Service2本身存在启动或配置问题。
检查Net.Tcp端口共享服务状态
在host2打开服务管理器,确认Net.Tcp Port Sharing Service是否处于运行状态:- 若Service2配置了
portSharingEnabled="true",该服务必须启动; - 若未启用端口共享,确认服务端绑定直接占用了1001端口。
- 若Service2配置了
排查防火墙应用层规则
临时关闭host2的防火墙(仅用于测试),重新从host1访问Service2:- 若连接恢复,需在防火墙中添加允许Service2进程的入站/出站规则,或允许net.tcp协议的流量通过。
内容的提问来源于stack exchange,提问作者grunt
相关产品推荐
相关产品推荐

