ソースはこちら(例外処理など、一部を省略してます)。
Uri uri = new Uri("ftp://...");
string destPath = "/path/to/move";
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(uri); ftpReq.Credentials = new NetworkCredential(this.userName, this.password); ftpReq.Method = WebRequestMethods.Ftp.Rename; ftpReq.KeepAlive = false; ftpReq.RenameTo = destPath; FtpWebResponse ftpRes = (FtpWebResponse)ftpReq.GetResponse();
このとき、ftpReq.RenameToの値は正しい値が入っているのですが、FTPサーバーのログを見ると、RNTOに指定されているパスが壊れており、結果としてステータス550で処理に失敗します。
どうやらこちらを見ると、Visual Studio 2010と.NET Framework 4.0の組み合わせでそうなっているらしく、.NET Frameworkのバージョンを4.5にアップしたら問題は解消されていました。