服务器无法解析自身名称引发WCF服务调用异常求助
解决方案
1. 排查调用方的机器名解析问题
- 异常核心是远程名称无法解析,先在发起调用的机器上执行
ping serverXYZ,查看是否能返回正确的IPv4地址。如果解析失败或返回错误IP,直接修改调用方的C:\Windows\System32\drivers\etc\hosts文件,添加一行:[serverXYZ的IPv4地址] serverXYZ - 若为域环境,检查域DNS服务器上的
serverXYZ记录是否存在、未过期。
2. 调整serverXYZ的IPv4优先级
- 本地ping自身返回
::1(IPv6环回),可能导致调用方解析到IPv6地址后无法通信。在serverXYZ上修改注册表调整优先级:- 打开注册表编辑器,定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters - 新建DWORD值
DisabledComponents,设置为0x20(仅禁用IPv6自动配置)或0xFFFFFFFF(完全禁用IPv6,按需选择) - 重启服务器后,本地ping
serverXYZ应返回IPv4环回地址127.0.0.1
- 打开注册表编辑器,定位到
3. 检查WCF服务的IIS绑定配置
- 打开IIS管理器,找到对应站点→编辑绑定,确认是否存在
http://*:81或http://[serverXYZ的IPv4地址]:81的绑定记录,避免仅绑定IPv6地址(如[::]:81) - 若需支持双栈,确保绑定包含IPv4和IPv6,或直接绑定
*:81
4. 验证调用方到serverXYZ的端口连通性
- 在调用方机器上执行
Test-NetConnection serverXYZ -Port 81(PowerShell)或telnet serverXYZ 81,确认81端口可正常连通。若不通,检查serverXYZ的防火墙入站规则,或中间网络设备的端口限制。
5. 临时用IPv4地址替代机器名测试
- 将调用方WCF配置中的
http://serverXYZ:81/bla/bla.svc临时替换为http://[serverXYZ的IPv4地址]:81/bla/bla.svc,若调用正常,可确认是机器名解析问题,回到第一步彻底解决。
内容的提问来源于stack exchange,提问作者Martin Mulder
相关产品推荐
相关产品推荐

