2017-09-26 122 views
0

FTPを使用してファイルをアップロードしてダウンロードします。アップロードとダウンロードの方法について、次のコードをまとめました。私は同じ場所で立ち往生しています。FTPアップロードとダウンロード - 227または500のエラーが発生する

私が使用している場合:

ftpRequest.UsePassive = false; 
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponseStream(); 

それは私に500エラーが発生します。しかし 、私は使用している場合:

FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponseStream(); 

私が手:リモートサーバーがエラーを返しました:227はパッシブモードに入ります。

ダウンロードとアップロードの両方の方法で同じ動作です。私はオンラインクライアントを使用してファイルをアップロードすることができるので、サーバーが正常にセットアップされていることがわかります。私はいくつかのスレッドが示唆したように私のアンチウイルスのファイアウォールを無効にしましたが、それはどちらもうまくいかない今私は何をすべきか分かりません。次のように私のアップロードとダウンロードの方法は以下のとおりです。

私のアップロード方法

private static void Upload() 
{ 
    FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://ftp.myserver.com/"); 
    ftpRequest.Credentials = new NetworkCredential("username", "password"); 
    ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory; 
    ftpRequest.UsePassive = false; 
    FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse(); 
    StreamReader streamReader = new StreamReader(response.GetResponseStream()); 

    string line = streamReader.ReadLine(); 
    while (!string.IsNullOrEmpty(line)) 
    { 
     Console.WriteLine(line); 
     line = streamReader.ReadLine(); 
    } 

    streamReader.Close(); 
} 

マイダウンロード方法

FtpWebRequest reqFTP; 
    try 
     { 
      FileStream outputStream = new FileStream(@"C:\download.csv", FileMode.Create); 

      reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://ftp.myserver.com/upload/myfile.csv")); 
      reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; 
      reqFTP.UseBinary = true; 
      reqFTP.UsePassive = false; 
      reqFTP.KeepAlive = true; 
      reqFTP.Credentials = new NetworkCredential("username", "password"); 
      FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); 
      Stream ftpStream = response.GetResponseStream(); 
      long cl = response.ContentLength; 
      int bufferSize = 2048; 
      int readCount; 
      byte[] buffer = new byte[bufferSize]; 

      readCount = ftpStream.Read(buffer, 0, bufferSize); 
      while (readCount > 0) 
      { 
       outputStream.Write(buffer, 0, readCount); 
       readCount = ftpStream.Read(buffer, 0, bufferSize); 
      } 

      ftpStream.Close(); 
      outputStream.Close(); 
      response.Close(); 
     } 
     catch (Exception ex) 
     { 

     } 

答えて

0

これは実際には完全にワーキングソリューションです。私のバディのノートパソコンで動作しますが、私のものではありません。いくつかのアンチウィルス設定があるようです。

関連する問題