我正在尝试使用WinSCP程序集从FTP获取列表文件,但我在下面的代码中得到一些例外,实际上连接本身没有建立
我在第一行创建了一个断点,它在第一行中抛出了这个异常。
代码:
SessionOptions sessionoptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = "<FTP Name>",
UserName = "<FTP User Name>",
Password = "<FTP Password>"
};
using (Session session = new Session())
{
session.Open(sessionoptions);
RemoteDirectoryInfo directory = session.ListDirectory("/<Folder Location>");
List<String> filelist = new List<string>();
foreach (RemoteFileInfo remotefileinfo in directory.Files)
{
filelist.Add(remotefileinfo.Name);
}
string line = string.Join(",", filelist.ToArray());
MessageBox.Show(line);
}
例外:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
PS:我是C#和WinSCP的新手
答案 0 :(得分:1)
让我打破我面临的问题的解决方案,基本上我想下载FTP服务器中可用的文件列表
创建一个SSIS脚本任务,然后将上面的代码粘贴到其中。
添加程序集作为执行此操作的参考
转到 - &gt;项目 - &gt;添加参考 - &gt;浏览(在此处浏览并添加dll文件)
要从SSIS访问此程序集,需要在GAC中注册此程序集。
打开Power shell并输入以下命令
Set-Alias
Name:Gacutil
Value: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\gacutil.exe
Gacutil /i "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
这将在GAC中注册程序集。现在SSIS脚本任务应该没有任何问题地执行。