Winscp avec package SSIS donne le Système.De la réflexion.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] paramètres, Object[] arguments)

Installé WinSCP .net à l'aide de nuget programme d'installation.

Visual Studio 2013

SSIS D'OFFRES DE 2012

Projet références sont correctes - il en montrant DLL qui a été installé

Projet contient un script qui est une version allégée de l'exemple de code à partir de la winscp site. Échoue sur la première ligne, qui essaie d'instancier SessionOptions objet. Si je supprime SessionOptions objet c'est la fin.

enregistré winscpnet.dll dans le GAC selon les instructions.

script de démarrage de visual studio ssis débogueur, obtenir ceci:

au Système.RuntimeMethodHandle.InvokeMethod(Objet cible, Object[]
arguments, Signature sig, Boolean constructeur)
Système.De la réflexion.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,
Object[] paramètres, Object[] arguments) à
Système.De la réflexion.RuntimeMethodInfo.Invoke(Object obj, BindingFlags
invokeAttr, Binder Binder, Object[] paramètres, CultureInfo culture)
au Système.RuntimeType.InvokeMember(String nom, BindingFlags
bindingFlags, Binder Binder, de l'Objet cible, Object[] providedArgs,
ParameterModifier[] modificateurs, CultureInfo culture, String[]
namedParams) à
Microsoft.SqlServer.Dts.Les tâches.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

    public void Main()
    {

        SessionOptions sessionOptions = new SessionOptions
        {
            Protocol = Protocol.Sftp,
            //To setup these variables, go to SSIS > Variables.
            //To make them accessible from the script task, in the context menu of the task,
            //choose Edit. On the Script task editor on Script page, select ReadOnlyVariables,
            //and tick the below properties.
            HostName = "",
            UserName = "",
            Password = "",
            SshHostKeyFingerprint = ""
        };

            bool fireAgain = false;

         Dts.Events.FireInformation(0, null,
                        string.Format("Upload of  succeeded"),
                        null, 0, ref fireAgain);



            Dts.TaskResult = (int)DTSExecResult.Success;
    }

L'ajout de captures d'écran, des flux et des processus

Winscp avec package SSIS donne le Système.De la réflexion.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] paramètres, Object[] arguments)
Winscp avec package SSIS donne le Système.De la réflexion.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] paramètres, Object[] arguments)
Winscp avec package SSIS donne le Système.De la réflexion.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] paramètres, Object[] arguments)
Winscp avec package SSIS donne le Système.De la réflexion.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] paramètres, Object[] arguments)

Mise à JOUR le: Modifié le code comme suit...exactement le même résultat

        public void Main()
    {
        bool fireAgain = false;

        try
        {
            SessionOptions sessionOptions = new SessionOptions
            {
                Protocol = Protocol.Sftp,
                //To setup these variables, go to SSIS > Variables.
                //To make them accessible from the script task, in the context menu of the task,
                //choose Edit. On the Script task editor on Script page, select ReadOnlyVariables,
                //and tick the below properties.
                HostName = "",
                UserName = "",
                Password = "",
                SshHostKeyFingerprint = ""
            };
        }
        catch (Exception ex)
        {

            Dts.Events.FireInformation(0, null,
                           ex.InnerException.Message,
                           null, 0, ref fireAgain);
        }               

            Dts.TaskResult = (int)DTSExecResult.Success;
    }
Je suppose que l'exception a un peu de texte ou d'un message et le type. Vous avez partagé uniquement une pile d'appels avec nous.
SSIS apparaît une boîte de message "DTS Tâche de Script: Erreur d'Exécution" Nom du Projet: bla "une Exception a été levée par la cible d'un appel", la pile d'appel est dans la zone de texte ci-dessous que les choses assez standard et compatible avec les autres AFIN de poteaux et poteaux d'ailleurs) qui note les questions avec l'aide de WinSCP sous SSIS
Dans tous les articles à propos de "une Exception a été levée par la cible d'un appel" je peux voir des informations à propos de l'exception qu'il a causé.
Je vois que vous avez ajouté des méthodes fireinformation appel en passant InnerException, mais je ne vois pas quel est le message que vous obtenez à partir de ce. Btw, le code même de les exécuter? Peut-être que l'exception est levée lorsque le code est en cours de chargement (comme le chargeur permet de résoudre les dépendances)
Ok, donc billinkc était sur la bonne voie apparemment SshHostKeyFingerprint ne peut pas être une chaîne vide - j'ai été en mesure de créer un nouvel objet vide et attribuer zéro les chaînes de longueur de tous les autres paramètres à l'exception de celui-ci. Le point de la longueur de zéro était de tester si elle travaillait, mais apparemment, ce paramètre ne peut pas être vide.

OriginalL'auteur Shaun Neal | 2015-03-26