BizTalk 2020 SFTP发送端口传输文件报WinSCP方法缺失错误
错误根因
抛出Method not found: 'Void WinSCP.SessionOptions.set_SshHostKeyPolicy(WinSCP.SshHostKeyPolicy)'错误的核心原因是WinSCP程序集版本与BizTalk 2020 SFTP适配器不兼容:
- BizTalk 2020的SFTP适配器在编译时硬绑定了特定版本的WinSCP .NET程序集,当前环境安装的v15.9.6版本不在适配器兼容范围内,运行时加载到的程序集要么没有实现
SshHostKeyPolicy属性的set方法,要么方法签名和适配器预期不一致,直接触发方法找不到的异常。 - 这类问题基本都是手动安装了非BizTalk自带的WinSCP版本、或者GAC(全局程序集缓存)中存在其他版本的WinSCP程序集被优先加载导致的,和SFTP的认证方式、端口配置本身没有直接关系。
修复操作
1. 部署兼容版本的WinSCP
- 先卸载当前系统中已安装的所有WinSCP版本,同时检查全局程序集缓存中是否存在残留的
WinSCPnet.dll,存在则全部移除。 - 不要从第三方渠道下载WinSCP安装包,直接使用BizTalk 2020安装目录自带的兼容版本安装包,默认路径为
<BizTalk安装根目录>\SDK\Utilities\WinSCP,运行路径内的安装程序完成部署即可。如果你的BizTalk 2020已经安装了累积更新(CU),按照对应CU的版本要求匹配WinSCP版本即可,不要随意跨大版本升级。 - 安装完成后,重启BizTalk所有运行主机实例,确保程序集加载生效。
2. 正确配置SSH主机密钥策略
版本兼容问题解决后,按以下步骤配置主机密钥校验,不要随意跳过校验逻辑:
- 先在BizTalk服务器本地打开WinSCP客户端,手动连接目标SFTP服务器,连接过程中弹出主机密钥确认提示时,复制完整的主机密钥指纹(格式为
ssh-rsa 2048 xx:xx:xx:xx:xx...)。 - 打开BizTalk管理控制台,进入对应SFTP发送端口的属性配置页,找到SFTP传输配置项:
- 将
SSH主机密钥策略设置为Check(强制校验,生产环境必须使用该配置) - 将刚才复制的完整主机密钥指纹粘贴到
SSH主机密钥指纹输入框中
- 将
- 保存端口配置,重启对应主机实例后即可正常发送文件。
注意:测试环境也不建议将主机密钥策略设置为
GiveUpSecurityAndAcceptAny,该配置会完全跳过主机密钥校验,存在SFTP连接被中间人窃听、篡改的风险。
内容的提问来源于stack exchange,提问作者BiztalkDev
相关产品推荐
相关产品推荐

