【发布时间】:2021-09-09 23:23:00
【问题描述】:
我想连接到 SFTP 以从那里下载文件。我也可以通过网站和命令提示符(使用 ftp 命令)使用凭证登录 SFTP。现在,我想使用特定凭据从我的 .Net 代码连接它。
我正在使用 SSH.NET 版本 2020.0.1 和 .Net Core Runtime 版本 3.1.18 和 .Net Core SDK 版本 3.1.412,操作系统是 Windows (10.0.17763) 64 位。
在尝试通过 .Net Framework 连接 SFTP 时,我可以使用从 NuGet 下载的相同 DLL 版本轻松地进行连接。现在,当我为 .Net Core 项目使用相同的代码时,它会抛出异常。我已经从 NuGet 为 .Net Core 下载了相同的包版本。
下面是我的代码:
public void Connect()
{
string host = "xxxx.xx.xxx";
int port = xx;
string userid = "xxxx";
string password = "xxxx";
try
{
Renci.SshNet.SftpClient client = new Renci.SshNet.SftpClient(host, port, userid, password);
if (!client.IsConnected)
{
client.ConnectionInfo.Timeout = TimeSpan.FromMinutes(1);
client.Connect();
Console.WriteLine("SFTP client connected successfully");
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
我在使用 .Net Core 时收到的异常消息如下:
通过操作 HashName 属性访问哈希算法不是 本平台支持。相反,您必须实例化其中一个 提供的子类型(例如 HMACSHA1。)
我在哪个地方做错了?任何帮助将不胜感激!
【问题讨论】:
-
什么版本的 .NET Core?似乎已在 .NET Core 2.1 中修复 - github.com/dotnet/runtime/issues/22929
-
嘿@MartinPrikryl 我正在使用 .Net Core 3.1 版,我也在我的帖子中更新了它。
-
确保您拥有所有更新。该问题仅在 3.1 发布后才关闭。
-
之前,.NET Core SDK 版本是 3.1.101。现在,我已经安装了 SDK 版本 3.1.412,.NET Core 运行时版本是 3.1.18。不过,我遇到了与上述相同的问题。