总的来说,C#提供了FTP很简单的方法,封装好的FtpWebRequest和FtpWebResponse,使得开发FTP模块很简单。但是封装好之后许多自定义化定制会有些问题,此处不具体详述。下面看期间遇到的一些问题:
try{ this.ftpUri = new Uri(ftpPath); this.webrequest = (FtpWebRequest)WebRequest.Create(ftpUri); if ((bool)radioButton_Binary.IsChecked) { webrequest.UseBinary = true; } else { webrequest.UseBinary = false; } webrequest.Credentials = new NetworkCredential(ftpConfig.ftpUserName, ftpConfig.ftpPasswd); }上面代码为FTP连接初始化的内容。webrequest.Method = WebRequestMethods.Ftp.UploadFile;Method指示进行何种FTP操作,但是在FTP封装的时候每次进行操作都要进行上述代码操作,
FtpWebRequest并没有提供一种会话保持机制(或者提供了,笔者没有找到?求惑),没有办法像一些FTP工具一样连接后自动保持会话直至超时,每次进行NetworkCredential是一种很不爽的操作。PS文件上传时可以使用delegate时UI保持活动状态。多个文件上传使用多线程为佳。