VirtualBox客户端通过TCP访问Windows服务托管的WCF报错如何解决?
WCF服务跨VirtualBox虚拟机访问报错解决方案
- 清理冗余配置:WCF服务类库的配置文件不会被宿主加载,可直接删除类库中的配置,所有服务配置统一放到Windows服务的app.config中即可,两份重复配置易引发冲突。
- 修正Windows服务的配置项:在Windows服务的
system.serviceModel/serviceBehaviors/behavior节点补全完整配置,示例如下:
<behavior name="mexBehavior"> <serviceMetadata httpGetEnabled="False" httpsGetEnabled="False"/> <!-- 调试阶段设为true方便查看异常详情,生产环境改回false避免泄露信息 --> <serviceDebug includeExceptionDetailInFaults="True"/> </behavior>
- 网络连通性排查:
- 宿主机Windows防火墙添加入站规则,开放8733端口的TCP访问权限
- 确认VirtualBox虚拟机网络配置为桥接或仅主机模式,虚拟机IP与宿主机IP 192.168.69.184处于同一网段,且虚拟机可正常ping通该IP
- 虚拟机内执行命令测试端口连通性:
Test-NetConnection 192.168.69.184 -Port 8733,端口不通优先排查网络策略
- 服务监听配置优化:将服务端baseAddress修改为
net.tcp://0.0.0.0:8733/WindowsServiceHost/HelloService/,让服务监听宿主机所有网卡IP,避免单网卡绑定导致虚拟机访问失败 - 基础服务检查:宿主机开启Windows系统服务
Net.Tcp Port Sharing Service,避免WCF TCP端口访问受限 - 客户端配置校验:客户端服务绑定需使用netTcpBinding,服务地址要和服务端baseAddress完全匹配
内容的提问来源于stack exchange,提问作者Sagar Mahajan
相关产品推荐
相关产品推荐

