在SSIS中使用WinSCP .NET程序集来检索文件列表

时间:2015-02-09 07:51:16

标签: c# ssis ftp winscp

我正在尝试使用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的新手

1 个答案:

答案 0 :(得分:1)

让我打破我面临的问题的解决方案,基本上我想下载FTP服务器中可用的文件列表

  1. 从此位置http://winscp.net/eng/docs/library_install

  2. 下载WinSCP程序集文件
  3. 创建一个SSIS脚本任务,然后将上面的代码粘贴到其中。

  4. 添加程序集作为执行此操作的参考

    转到 - &gt;项目 - &gt;添加参考 - &gt;浏览(在此处浏览并添加dll文件)

  5. 要从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脚本任务应该没有任何问题地执行。