私はいくつかの情報を.CSVファイルに収集し、そのファイルをftpサーバーに送信するプロジェクトに取り組んでいます。c#FTPアップロードはなぜ成功するのですか?
プログラムは時々ファイルを正常に送信し、それ以外の時間、それだけでエラーを停止し、スロー:
型「System.Net.WebException」の未処理の例外がSystem.dllの
で発生しました追加情報:リモートサーバーからエラーが返されました:227パッシブモードに入る(192,168,10,170,216,244)
誰かが間違っていたことを見つけられますか?
ありがとうございます。
は、ここに私のコードです
private void sendFile_Click(object sender, EventArgs e)
{
Upload("ftp://100.64.44.12", "UsernameHere", "PasswordHere", @"C:\Users\Kasper\Documents\testFolder\data.csv");
}
public void Upload(string FTPAddress, string username, string password, string filePath)
{
FileStream stream = File.OpenRead(filePath);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Close();
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(FTPAddress + "/" +
Path.GetFileName(filePath));
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
request.UsePassive = true;
request.UseBinary = false;
request.KeepAlive = true;
StreamReader sourceStream = new StreamReader("testfile.txt");
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
MessageBox.Show("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
}
が上のパッシブモードのままに設定してみてください。サーバーでパッシブ接続のみが許可されている場合、500サーバーエラーが発生します。 system.netのトレースを取得すると、エラーが発生した理由がわかります。通常はファイアウォールです。 – vendettamit
[ロギングを有効にする](http://stackoverflow.com/q/9664650/850848)、成功したアップロードと失敗したログの両方のログファイルを表示します。 –