Как отправить произвольные команды FTP в C#

Я реализовал способность загрузить, загрузите, удалите, и т.д. с помощью FtpWebRequest класс в C#. Это является довольно прямым.

Что я должен сделать, теперь поддержка, отправляющая произвольные команды FTP такой как

quote SITE LRECL=132 RECFM=FB
or 
quote SYST

Вот конфигурация в качестве примера прямо от нашего app.config:



     quote SITE LRECL=132 RECFM=FB

Я все еще исследую, как сделать это использование FtpWebRequest. Я, вероятно, попробую WebClient класс затем. Кто-либо может указать на меня в правильном более быстром направлении?Спасибо!

ОБНОВЛЕНИЕ: я пришел к тому же самому заключению с Платформы.NET 3.5 FtpWebRequest не поддерживает ничего кроме того, что находится в WebRequestMethods.Ftp.*. Я попробую приложение сторонних производителей, рекомендуемое некоторыми из других сообщений. Спасибо за справку!

8
задан Martin Prikryl 27 January 2016 в 07:15
поделиться

3 ответа

Я не думаю, что это можно сделать с помощью FtpWebRequest ... Единственный способ указать команду FTP - использовать свойство Method , а в документации указано:

Обратите внимание, что строки, определенные в классе WebRequestMethods.Ftp , являются единственными поддерживаемыми параметрами для свойства Method . Установка для свойства Method любого другого значения приведет к исключению ArgumentException .

SITE и SYST не входят в число предопределенных параметров, поэтому я думаю, вы застряли ...

Не тратьте время на использование класса WebClient , он даст вам еще меньше гибкости чем FtpWebRequest .

Однако существует множество сторонних реализаций FTP, с открытым исходным кодом или коммерческих, и я почти уверен, что некоторые из них могут обрабатывать пользовательские команды ...

9
ответ дан 5 December 2019 в 12:57
поделиться

Вы можете попробовать наш компонент FTP Rebex :

// create client and connect 
Ftp client = new Ftp();
client.Connect("ftp.example.org");
client.Login("username", "password");

// send SITE command
// note that QUOTE and SITE are ommited. QUOTE is command line ftp syntax only.
client.Site("LRECL=132 RECFM=FB");

// send SYST command
client.SendCommand("SYST");
FtpResponse response = client.ReadResponse();
if (response.Group != 2) 
  ; // handle error 

// disconnect 
client.Disconnect();
3
ответ дан 5 December 2019 в 12:57
поделиться

Используйте sendCommand ("SITE LRECL = 242 BLKSIZE = 0 RECFM = FB");

-5
ответ дан 5 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: