Frage

Nach einigen Suchanfragen nach Möglichkeiten zu FTP -Dateien in AX war ich froh, die Winet -Klasse zu entdecken, die mehr oder weniger nur ein Wrapper für den gleichnamigen .dl -gleichnamigen ist. Ich dachte, meine Probleme wurden gelöst! Mir war jedoch nicht bewusst, dass die Klasse eine hatte Major Achilles Ferse - Es wird nicht in Batch (auf einem Server) ausgeführt.

Kann mich jemand in die richtige Richtung verweisen? Insbesondere möchte ich (FTP Put) eine Datei auf einen anderen Server in einem servergestalteten Stapeljob hochladen (als Service-Benutzer mit Administratorrechten an der betreffenden Datei ausgeführt). Irgendjemand?

War es hilfreich?

Lösung

Es gibt ein weiteres Beispiel für die Verwendung von .NET -Klassen für FTP in Axaptapedia. Es ist anders genug von dem Beispielcode von 10p, um einen Blick darauf zu werfen ...

In meiner eigenen Erfahrung habe ich am Ende geschrieben und dann eine Fledermausdatei aus der Befehlszeile angerufen, um FTP -Befehle zu übergeben, da wir einen speziellen FTP -Client verwenden mussten! Hier sind zwei Beispiele für die Verwendung von Shell Scripting - Netzzeit && Einen Prozess ausführen.

Andere Tipps

Verwenden Sie .NET -Klassen in AX, z. B. die folgenden Codeprotokolle in den FTP -Server und benennen Sie die Datei dort um:

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));

Dies ist nur ein Beispiel, aber Sie können jeden Standard -FTP -Befehl verwenden, der diesen Code leicht mpdifiziert. Lassen Sie mich wissen, ob das Konzept unklar ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top