Чтение файла FTP из виртуальной машины Azure или веб-задания Azure

Я создал консольное приложение, которое читает файл CSV с FTP- сервера и выдает записи после проверки в базу данных.

Когда я попробовал код с моей локальной машины, он работал отлично. Нет ошибок, нет ошибок. Но когда я помещаю его на виртуальную машину Azure, чтобы запланировать его. ИЛИ Когда я создаю веб-задание Azure для создания задания по расписанию, я получаю следующую ошибку при доступе к файлу.

Удаленный сервер возвратил ошибку: (500) Синтаксическая ошибка, команда не распознана. в System.Net.FtpWebRequest.SyncRequestCallback(Object obj) в System.Net.FtpWebRequest.RequestCallback(Object obj) в System.Net.CommandStream.Dispose(логическое удаление) в System.IO.Stream.Close() в System.IO.Stream.Dispose() в System.Net.ConnectionPool.Destroy(PooledStream pooledStream) в System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, объект owningObject, Int32 creationTimeout, логическое canReuse) в System.Net.FtptageSecRequestReququReququ) в System.Net.FtpWebRequest.GetResponse() в Bethesda_DataUpload.Program.Main(String[] args) в D:\Projects\Program.cs: строка 35

Я использую следующий код для подключения к FTP-серверу

    string dataFile = "ftp://testftp-L.cloudapp.net/Inbound/sampleFile.csv";
    FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(dataFile));
    request.UsePassive = false;
    request.UseBinary = true;
    request.KeepAlive = true;
    request.Credentials = new NetworkCredential(ftpUsrName, ftpPassword);
    request.Method = WebRequestMethods.Ftp.DownloadFile;
    request.Proxy = WebRequest.DefaultWebProxy;
    request.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

    List<string> entries = new List<string>();


    using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
    {
        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        {
            entries = reader.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
        }
    }

Я пробовал все комбинации KeepAlive и UsePassive, как

Сочетание 1

request.UsePassive = false;
request.KeepAlive = false;

Сочетание 2

request.UsePassive = false;
request.KeepAlive = true;

Комбинация 3

request.UsePassive = true;
request.KeepAlive = false;

Комбинация 4

request.UsePassive = true;
request.KeepAlive = true;

Какой код я должен использовать?

0 ответов

Другие вопросы по тегам