背景:
我使用 Visual Studio Community 2015 在 C# 中开发了一个 Windows 窗体类型的桌面应用程序,它从 Access 数据库中查询某些信息,然后通过 sftp 将所述信息保存到服务器。
问题:
我正在使用以下代码1来保存正在工作的文件(在本例中使用ftp):
try
{
// Credenciales de prueba:
string rutaArchivo = @"C:/MiArchivo.csv";
string FTP_server = "N/A";
string FTP_username = "N/A";
string FTP_password = "N/A";
using (StreamReader stream = new StreamReader(rutaArchivo))
{
byte[] buffer = System.Text.Encoding.Default.GetBytes(stream.ReadToEnd());
WebRequest request = WebRequest.Create(FTP_server + nombreArch);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(FTP_username, FTP_password);
Stream reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("No se guardó el archivo: " + ex.Message);
}
但是,当使用sftp时,它给了我以下错误:
文件未保存:System.NotSupportedException:URI 前缀无法识别。在 System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) 在 System.Net.WebRequest.Create(String requestUriString)
根据以下来源:
SFTP - .NET 不支持开箱即用。您需要第三方支持。
我研究了几种替代方案,例如:
- 我正在阅读其文档的WinSCP,但我不熟悉此组件(我正在检查其他来源以获取有关如何在我的项目中使用此组件的指导)。
- Renci.SshNet 和 SSH.NET 将我重定向到同一页面。
此外,要安装,您需要通过NuGet Package Manager for Visual Studio 2015下载它,但其他用户的反馈表明该应用程序不稳定。
我正在寻找使用sftp保存文件的“最简单”方法和/或关于如何下载任何这些组件以在该项目中实现的“分步教程”。
1从以下源修改代码。
以下代码使用了
Renci SSH.Net
易于实现的库:方法调用
UploadSFTPFile
:示例代码摘自CodeProject博客
在以下链接中,您可以找到通过 .Net 连接的不同客户端
SFTP
,其中一些是付费的。