2015-03-03 2 views
2

У нас есть Alpha-сервер OpenVMS (VMS), который мне нужен для передачи файла через FTP. Проблема в том, что она не поддерживает команду, используемую в FtpWebRequest при запуске соединения (ftp://192.168.xx.xx), есть ли какая-либо другая функция FTP, которую я могу использовать, помимо FtpWebRequest?Получение «Недействительного URL» при загрузке файла с использованием FtpWebRequest

Раньше я использовал свой код в среде Windows и Unix, но это мой первый раз, чтобы сделать это на ОС VMS, я также могу получить доступ к серверу через FTP с помощью командной строки.

Ниже мой код:

//Initializing ftp request 
ftp ftpClient = new ftp(@"ftp://192.168.xx.xx/", "username", "password"); 
MessageBox.Show((ftpClient.upload("FILE.TAB", @"C:\FILE.TAB")).ToString()); 

public ftp(string hostIP, string userName, string password) 
    { 
     host = hostIP; user = userName; pass = password; 
    } 
public string upload(string remoteFile, string localFile) 
    { 
     try 
     { 
      /* Create an FTP Request */ 
      ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + remoteFile); 
      /* Log in to the FTP Server with the User Name and Password Provided */ 
      ftpRequest.Credentials = new NetworkCredential(user, pass); 
      ///* When in doubt, use these options */ 
      ftpRequest.UseBinary = false; 
      ftpRequest.UsePassive = true; 
      ftpRequest.KeepAlive = true; 

      /* Specify the Type of FTP Request */ 
      ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; 
      /* Establish Return Communication with the FTP Server */ 
      ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); 
      ftpStream = ftpRequest.GetRequestStream(); 
      /* Open a File Stream to Read the File for Upload */ 
      FileStream localFileStream = new FileStream(localFile, FileMode.Open); 
      /* Buffer for the Downloaded Data */ 
      byte[] byteBuffer = new byte[bufferSize]; 
      int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); 
      /* Upload the File by Sending the Buffered Data Until the Transfer is Complete */ 

      while (bytesSent != 0) 
      { 
       ftpStream.Write(byteBuffer, 0, bytesSent); 
       bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); 
      } 

      /* Resource Cleanup */ 
      localFileStream.Close(); 
      ftpStream.Close(); 
      ftpRequest = null; 
      return "0"; 

     } 
     catch (Exception ex) { return ex.ToString(); } 
     //return 1; 
    } 

Я получаю ошибку на приведенный выше код "Неверный URL ....".

в то время как ошибка, я получаю, когда я пытаюсь запустить его в браузере: enter image description here

Но я могу подключиться, используя обычную команду CMD в окнах: enter image description here

Любые предложения ??

+0

* Я получаю ошибку на приведенный выше код «Неверный URL .... ". *: Код в вашем вопросе не может ничего выбросить. Покажите нам фактический код, который выдает (вероятно, код, который включает в себя «FtpWebRequest») –

+0

См. Также http://stackoverflow.com/q/17306890/850848 –

+0

@MartinPrikryl - там вы, код обновлен. – NickSharp

ответ

3

URL-адрес не имеет форму

ftp://192.168.xx.xx:FILE.TAB 

но

ftp://192.168.xx.xx/FILE.TAB 

См https://en.wikipedia.org/wiki/URL

+0

Сложно, я уже делал это раньше, я изменил «host +»: «+ remoteFile» на «host +»/«+ remoteFile», и я все еще сталкиваюсь с той же ошибкой, но когда я помещаю «/» в конец самого адреса (я обновил свой код выше), он сработал! Не знаю, почему, но ваш ответ дал мне эту идею, так спасибо! – NickSharp

Смежные вопросы