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
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;
}
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
Vous devez vous connecter pour publier un commentaire.
Lors de la troisième partie de la DLL est utilisée dans la Tâche de Script de SSIS nous avons besoin d'effectuer GAC.
Veuillez ouvrir l'invite de Commande.
cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools"
Exécuter la commande Suivante.
gacutil -i <"Path of WinSCP DLL">
Après l'exécution de la GAC de commande Optionnel tâche doit s'exécuter comme prévu. Au moment de l'exécution SSIS est pas en mesure d'obtenir DLL de référence et qui est la cause de cette erreur.
Espère que cela fonctionne!!
Je suis confronté à la même erreur. Je suis à la recherche de ce WinSCP.dll et je ne sais pas où il est. Où puis-je trouver son chemin ? Je suis l'aide de SSIS et Visual Studio 2015
N. B. l'assemblée devra également être signé pour être ajouté à la GAC.
Ce n'est pas mentionnée dans la documentation de WinSCP .NET de l'assemblée de l'installation.
Oui, ça marche pour moi, et il convient de marquer comme réponse!
OriginalL'auteur Nicky Thakkar
J'ai eu cette même Exception au C# événement délégué invocation, après avoir creusé avec bloc try catch, et avec l'aide de la stacktrace, j'ai trouvé qu'il y avait une exception générée à partir de l'une des méthodes de gestionnaire d'événement. après la correction qu'il a commencé à bien fonctionner.
OriginalL'auteur Rahul Sonone