问题描述
我在 SSIS 中运行我的脚本任务时遇到一个奇怪的错误,我不明白为什么
我试图在外部 SFTP 服务器中获取最新文件,然后将其存储在我的本地环境中,在我放入 localPath
变量的目录中
明明不是文件,我介绍的是完整路径
错误信息:
Error: Error: WinSCP.Sessionremoteexception: «C:\Users\Downloads» is not a file!
in WinSCP.OperationResultBase.Check()
in ST_t5fbgt5564cf3a165da70892d8c435v.ScriptMain.Main()
我的代码:
#region Namespaces
using System;
using Microsoft.sqlServer.Dts.Tasks;
using System.Data;
using Microsoft.sqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Linq;
using WinSCP;
#endregion
namespace ST_t5fbgt5564cf3a165da70892d8c435v
{
[Microsoft.sqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain :
Microsoft.sqlServer.Dts.Tasks.ScriptTask.vstaRTScriptObjectModelBase
{
public void Main()
{
try
{
Sessionoptions sessionoptions = new Sessionoptions
{
Protocol = Protocol.Sftp,HostName = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",UserName = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",Password = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",PortNumber = xx
};
using (Session session = new Session())
{
session.Open(sessionoptions);
const string remotePath = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const string localPath = @"C:\Users\Downloads";
RemoteDirectoryInfo directoryInfo = session.ListDirectory(remotePath);
RemoteFileInfo latest =
directoryInfo.Files
.Where(file => !file.IsDirectory)
.OrderByDescending(file => file.LastWriteTime)
.FirstOrDefault();
if (latest == null)
{
throw new Exception("No found");
}
session.GetFiles(
RemotePath.EscapeFileMask(latest.FullName),localPath).Check();
}
Dts.TaskResult = (int)DTSExecResult.Success;
}
catch (Exception e)
{
Console.WriteLine("Error: (0)",e);
return 1;
}
}
#region ScriptResults declaration
enum ScriptResults
{
Success = Microsoft.sqlServer.Dts.Runtime.DTSExecResult.Success,Failure = Microsoft.sqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
}
}
这是怎么回事?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)