如何修复 SFTP 端口上的 WinSCP 错误 'System.Xml.XmlException: Root element is missing'

How to fix WinSCP error 'System.Xml.XmlException: Root element is missing' on SFTP Port

我在使用 SFTP 接收端口的 BizTalk 2016 实例上轮询连接到 SFTP 站点时收到以下错误:

The Messaging Engine failed to add a receive location "OURPORTNAME" with URL "sftp://oursourceserver:22/Live/Pickup/Exports/." to the adapter "SFTP". Reason: "WinSCP.SessionLocalException: Error parsing session log file ---> System.Xml.XmlException: Root element is missing. at System.Xml.XmlTextReaderImpl.Throw(Exception e) at System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Xml.XmlTextReaderImpl.Read() at WinSCP.SessionLogReader.DoRead()

查看 WinSCP 站点,似乎与此版本的 BizTalk 相关联的 WinSCP 版本可能会出现此错误。

BT2016自带的WinSCP版本为:

文件版本:1.5.4.8265 产品版本:5.13.1.0

我尝试将 WinSCP 程序集和 EXE 的新版本 5.13.6 (1.5.6.9061) 复制到 BizTalk 安装文件夹中 并使用以下说明更新 Biztalk 32和 64 位配置文件 (BTSNTSvc.exe.config) 重定向到这个新版本的 WinSCP:

微软 BizTalk SFTP Adapter

(参见 'Use a newer WinSCP version')

所以在 64 位和 32 位配置中我有:

<bindingRedirect oldVersion="1.5.4.8265" newVersion="1.5.6.9061" />

编辑并重新启动主机实例后,我从事件日志中的 SFTP 端口获取了此信息:

The Messaging Engine failed to add a receive location "OURPORTNAME" with URL "sftp://oursourceserver:22/Live/Pickup/Exports/." to the adapter "SFTP". Reason: "WinSCP.SessionRemoteException: Network error: Software caused connection abort at WinSCP.SessionLogReader.Read(LogReadFlags flags) at WinSCP.ElementLogReader.Read(LogReadFlags flags) at

关于可能导致此问题的任何想法?

此问题已在 WinSCP 5.13.2 中修复:
Bug 1619 – Failure when .NET assembly starts reading an XML log file in a short moment when it's empty yet


对于较新版本的 WinSCP 的问题,请考虑发布一个新问题并且不要忘记包含会话日志文件 (Session.SessionLogPath)。

事实证明,升级后存在 firewall/connectivity 问题,无法在我们的测试环境中运行。