次のc#コードがあります。.NET Framework 3.5 または 2.0 に対してコンパイルすると問題なく動作します (3.0 に対してはテストしていませんが、おそらく動作するでしょう)。問題は、.NET Framework 4.0 に対してビルドすると失敗することです。
FtpWebRequest Ftp = (FtpWebRequest)FtpWebRequest.Create(Url_ + '/' + e.Name);
Ftp.Method = WebRequestMethods.Ftp.UploadFile;
Ftp.Credentials = new NetworkCredential(Login_, Password_);
Ftp.UseBinary = true;
Ftp.KeepAlive = false;
Ftp.UsePassive = true;
Stream S = Ftp.GetRequestStream();
byte[] Content = null;
bool Continue = false;
do
{
try
{
Continue = false;
Content = File.ReadAllBytes(e.FullPath);
}
catch (Exception)
{
Continue = true;
System.Threading.Thread.Sleep(500);
}
} while (Continue);
S.Write(Content, 0, Content.Length);
S.Close();
FtpWebResponse Resp = (FtpWebResponse)Ftp.GetResponse();
if (Resp.StatusCode != FtpStatusCode.CommandOK)
Console.WriteLine(Resp.StatusDescription);
問題は call Stream S = Ftp.GetRequestStream();にあります。これは、「リモート サーバーがエラーを返しました: (500) 構文エラー、コマンドを認識できません」というメッセージとともに WebException の en インスタンスをスローします。
なぜそうなのか誰か知っていますか?
PS。ECM Alfresco の仮想 ftp サーバーと通信します。
編集: 最近、Windows 7 で .NET Framework 3.5 Windows サービスを使用できないことがわかったので、この問題を解決できれば幸いです。私がする必要があるのは、ファイルを ftp にアップロードすることです - C# で別の (動作する) 方法はありますか?
edit2: 前の編集は正しくありません。やや混乱しました ...