Domanda

Dopo un bel paio di ricerche di modi per i file FTP in AX, ero felice di scoprire la classe WinInet, che è più o meno solo un wrapper per la DLL con lo stesso nome. Ho pensato che i miei problemi sono stati risolti! Non ero a conoscenza, però, che la classe ha avuto un principale tallone d'Achille -. Non viene eseguito in modalità batch (su un server)

Qualcuno può punto nella giusta direzione di me? In particolare, voglio caricare (FTP put) un file a un altro server in un processo batch di server-run (esecuzione come utente del servizio con diritti di amministratore per il file in questione). Chiunque?

È stato utile?

Soluzione

C'è un altro esempio di utilizzo di classi .NET per FTP in Axaptapedia . E 'abbastanza diverso dal codice di esempio di 10p a dare un'occhiata ...

Nella mia esperienza ho finito per scrivere e quindi chiamando un file bat dalla riga di comando per passare in comandi ftp come abbiamo bisogno di utilizzare un client FTP speciale! Ecco due esempi di utilizzo di script di shell - Net Time && eseguire un processo .

Altri suggerimenti

classi .NET Usa in AX, per esempio in seguito i registri di codice al server FTP e rinomina il file c'è:

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

Questa è solo un esempio, ma sentitevi liberi di utilizzare qualsiasi comando FTP standard leggermente mpdifying questo codice. Fatemi sapere se il concetto è chiaro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top