VS2008 をデバッガとして使用して C# コードから Win 2008 Server に FTP しようとすると、例外が発生し続けます。
私のテストクラスは次のようになります。
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
ポート 52184 がどのように生成されるのかわかりません。ftpServerIP で、ポート 21 であることを指定します。
Googleで同じ問題を抱えている人を何人か見つけましたが、これがどのように解決されるかについての良い例を見つけられず、なぜそれが起こるのかまだわかりません.
誰でもこの問題を処理する方法を知っていますか??
アップデート:
別の FTP アカウントに接続しようとしましたが、すべて正常に動作します。したがって、192.168.10.35:21 FTP をテストしましたが、CuteFTP Pro などでは問題なく動作します。これはそれをさらに奇妙にします..