VS2008をデバッガとして使用してC#コードからWindows 2008 ServerにFTP接続しようとすると例外が発生します。C#でFtpWebRequestを使用するポート番号を設定します
私のテストクラスは次のようになります。
public class FTP
{
private string ftpServerIP = "192.168.10.35:21";
private string ftpUserID = "Administrator";
private string ftpPassword = "XXXXXXXX";
private string uploadToFolder = "uploadtest";
public void Upload(string filename)
{
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://" + ftpServerIP + "/" + uploadToFolder + "/" + fileInf.Name;
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.ContentLength = fileInf.Length;
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
FileStream fs = fileInf.OpenRead();
try
{
Stream strm = reqFTP.GetRequestStream();
contentLen = fs.Read(buff, 0, buffLength);
while (contentLen != 0)
{
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
strm.Close();
fs.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
私は、コードを実行すると、私はGetRequestStream()の呼び出しでのFTPエラー227で失敗した接続を取得します。私は、接続を見ることができる例外で は失敗へ:192.168.10.35:52184
私はそれが私はそれがあるべきことをftpServerIPに指定52184. ポートを思い付く方法は考えているポート21
私はGoogleで同じ問題を抱える少数の人物を見つけましたが、これがどのように解決されたかについての良い例は見つかっていません。なぜそれが起こるのかまだ分かりません。
誰でもこの問題を処理する方法を知っていますか?
UPDATE:
私は別のFTPアカウントに接続しようとしていて、そこにすべてが正常に動作します。したがって私は自分の192.168.10.35:21 FTPをテストしましたが、CuteFTP Proなどでうまく動作します。 これはちょっと奇妙になります。
違いがわかりますが、パッシブからアクティブに変更できないと思いますが、誰かがそれについての良いガイドを持っていますか? –