我正在尝试在Visual Studio中使用WinSCP。我使用Managed NuGet软件包下载并安装了WinSCP。我已在Web应用程序中使用以下代码将其中一个文件传输到远程Linux服务器。该代码可以正常执行,没有任何错误,但是不会传输文件。我使用PuTTY登录以验证文件是否已实际传输,但是找不到该文件。下面是使用的代码
public int Upload(String HostName, String UserName, String Password, String remotePath, String localFilePath)
{
int result = 0;
Session session = null;
try
{
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = HostName,
UserName = UserName,
Password = Password,
Timeout = TimeSpan.FromDays(1),
};
using (session = new Session())
{
// Connect
session.Open(sessionOptions);
// upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Ascii;
TransferOperationResult transferResult = null;
transferResult = session.PutFiles(localFilePath, remotePath, false, transferOptions);
// Throw on any error
transferResult.Check();
// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
}
session.GetFiles(@"\\remoteserver\folder1\folder_backups\test_files\test1.txt", @"d:\folder3\").Check();
}
result = 0;
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e);
result = 1;
}
finally
{
if (session != null)
{
session.Dispose();
}
}
return result;
}
参数传递如下:
project1.Upload("remote host server", "username", "password", @"\\remote host server\folder1\folder_backups\test_files\", Fileupload1.PostedFile.FileName);
执行代码没有任何错误,但是没有上载或下载文件。如何解决这个问题? 谢谢
答案 0 :(得分:1)
在GUI中登录后,它指向/ home / UserId。但是我要移动文件的文件夹位于/ folder1
如果您要使用的远程路径是/folder1/
,请在您的remotePath
方法的Upload
参数中使用该路径,而不要使用明显错误的值@"\\remote host server\folder1\folder_backups\test_files\"
。
project1.Upload("host", "user", "password", "/folder1/", Fileupload1.PostedFile.FileName);
答案 1 :(得分:0)
不确定,但您似乎已将协议设置为FTP,服务器可能不支持该协议。如果您能够通过腻子登录,则意味着可以建立SSH连接。尝试将协议设置为SFTP。