我有以下 c# 代码。它在针对 .NET 框架 3.5 或 2.0 编译时运行良好(我没有针对 3.0 对其进行测试,但它很可能也可以工作)。问题是,它在针对 .NET 框架 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);
问题在于调用 Stream S = Ftp.GetRequestStream(); ,它会抛出一个 WebException 实例,并带有消息“远程服务器返回错误:(500) 语法错误,命令无法识别”。
有人知道为什么会这样吗?
PS。我与 ECM Alfresco 中的虚拟 ftp 服务器通信。
编辑:我最近发现,在 Windows 7 上不可能有 .NET framework 3.5 windows 服务,所以解决这个问题会很好。我需要做的是将文件上传到 ftp - c# 中还有另一种(工作)方式吗?
edit2:以前的编辑不是真的,我有点困惑......