运行Import-TestToolkitToNavContainer报docker错误及BC OData元数据问题
导入BC测试工具包阶段报错原因说明
- 报错核心触发逻辑:
Import-TestToolkitToNavContainer属于NavContainerHelper模块的内置命令,所有对BC容器的操作底层都依赖直接调用宿主机的dockerCLI执行容器指令,不存在内置的容器交互逻辑。 - 具体报错诱因:
- 当前执行PowerShell命令的主机没有安装Docker CLI,或Docker的安装路径没有加入系统环境变量,系统无法识别
docker指令 - 在本地个人电脑上执行命令,但远程连接Azure上的BC容器时,没有配置本地Docker的远程守护进程访问权限,命令无法调用远程主机的docker接口
- 当前执行PowerShell命令的主机没有安装Docker CLI,或Docker的安装路径没有加入系统环境变量,系统无法识别
- 对应组件配置要求:
- 不需要额外安装其他专用模块,只要确保执行
Import-TestToolkitToNavContainer命令的主机,和运行BC容器的Docker主机是同一台(即已搭好的装了Docker的Azure虚拟机) - 在虚拟机内部验证Docker可用性:执行
docker ps命令,如果能正常列出运行中的BC容器,就说明docker指令识别正常,再重新跑导入测试工具包的命令即可 - 若验证docker指令仍报错,先确认虚拟机内Docker引擎已正常启动,且CLI路径已加入系统PATH环境变量
- 不需要额外安装其他专用模块,只要确保执行
Postman获取BC OData元数据的方式校验
- 当前构造的请求路径存在3处关键错误,直接用现有路径无法成功获取元数据:
- 端口混淆:BC的OData V4服务默认监听端口是7048,7748是SOAP web服务的默认端口,不是OData服务的监听端口,使用7748会直接连接失败
- 服务名错误:BC容器部署的默认服务实例名是*
BC,SandBox是环境别名不是IIS中注册的实际服务实例名*,可通过虚拟机内IIS管理器的BC站点节点查看真实的服务实例名称 - 路径结构偏差:容器部署的BC默认OData元数据请求不需要嵌套
ServiceName/api/beta/$metadata结构,正确的路径规则为:直连端口访问:
http://<虚拟机可访问地址>:7048/<实际服务实例名>/api/v2.0/$metadata
走Web客户端统一入口访问(已配置反向代理/统一域名的场景):http://<Web客户端地址>/<实际服务实例名>/api/v2.0/$metadata
- 认证方式校验:使用BC用户的Web访问密钥做基础认证是符合要求的,注意账号格式需填写为
<租户ID>/<登录用户名>,密码栏直接粘贴生成的Web访问密钥,不能填写用户的网页登录密码。 - 排查提示:
- 可先在BC虚拟机本地浏览器打开上述正确路径,如果能正常返回XML格式的元数据内容,说明OData服务本身运行正常
- 若本地能访问但Postman无法连接,检查Azure虚拟机的网络安全组是否放行对应OData端口的入站规则,Postman请求头是否配置正确的
Accept: application/xml参数
内容的提问来源于stack exchange,提问作者Abbey
相关产品推荐
相关产品推荐

