Question

Après pas mal de recherches des moyens de fichiers FTP dans AX, je suis heureux de découvrir la classe WinInet, qui est plus ou moins juste une enveloppe pour le .DLL du même nom. Je pensais que mes problèmes ont été résolus! Je ne savais pas, cependant, que la classe avait un talon d'Achille majeur -. Il ne fonctionne pas dans le lot (sur un serveur)

point que quelqu'un peut me dans la bonne direction? Plus précisément, je veux télécharger (FTP mis) un fichier vers un autre serveur dans un travail de traitement par lots serveur (en cours d'exécution en tant qu'utilisateur de service avec des droits d'administrateur sur le fichier en question). Tout le monde?

Était-ce utile?

La solution

Il est un autre exemple de l'utilisation de classes .NET pour FTP Axaptapedia . Il est assez différent du code exemple de 10p pour regarder ...

Dans ma propre expérience, je fini par écrire et appeler un fichier de chauve-souris de la ligne de commande pour passer des commandes ftp que nous avions besoin d'utiliser un client FTP spécial! Voici deux exemples d'utilisation de scripts shell - Net Time && Exécuter un de processus.

Autres conseils

Utilisation des classes .NET dans AX, par exemple, suivant les journaux de code dans le serveur FTP et renomme le fichier il:

str ftpHostName = 'ftp.microsoft.com'; // without "ftp://", only name
str username    = 'myloginname';
str password    = 'mypassword';
str oldname     = 'oldfilename';
str newname     = 'newfilename';

System.Net.Sockets.Socket socket;
System.Net.Dns dns;
System.Net.IPHostEntry  hostEntry;
System.Net.IPAddress[] addresses;
System.Net.IPAddress    address;
System.Net.IPEndPoint endPoint;

void sendCommand(str _command)
{
    System.Text.Encoding ascii;
    System.Byte[] bytes;
    ;

    ascii = System.Text.Encoding::get_ASCII();
    bytes = ascii.GetBytes(_command + '\r\n');
    socket.Send(bytes, bytes.get_Length(), System.Net.Sockets.SocketFlags::None);
}
;

socket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily::InterNetwork, System.Net.Sockets.SocketType::Stream, System.Net.Sockets.ProtocolType::Tcp);
hostEntry = System.Net.Dns::GetHostEntry(ftpHostName);

addresses = hostEntry.get_AddressList();
address = addresses.GetValue(0);

info(address.ToString());

endPoint = new System.Net.IPEndPoint(address, 21);
socket.Connect(endPoint);

sendCommand(strfmt("USER %1", username));
sendCommand(strfmt("PASS %1", password));
sendCommand(strfmt("RNFR %1", oldname));
sendCommand(strfmt("RNTO %1", newname));

Ceci est juste un exemple, mais ne hésitez pas à utiliser toute commande FTP standard mpdifying légèrement ce code. Permettez-moi de savoir si le concept ne sait pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top