我一直致力于一个需要我上传到FTP服务器并从FTP服务器下载的项目。我让整个系统工作,但代码是丑陋的,至少可以说,因为一个相当大的程序块是静态的(请不要拍我!),它很难开发。
我最近决定重写一个很好的程序块,但我没有更改FTP上传的特定代码中的任何内容,除了将其从静态函数移动到非静态函数。它仍然以某种方式似乎没有工作,我得到的错误给了我没有有用的信息。如果函数是静态的,这只能以这种方式执行吗?
FtpWebRequest ftpRequest;
FtpWebResponse ftpResponse;
StreamReader fileReader;
try
{
ftpRequest = (FtpWebRequest)WebRequest.Create(uri);
ftpRequest.Timeout = 50000;
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
ftpRequest.KeepAlive = false;
ftpRequest.UseBinary = false;
ftpRequest.Credentials = new NetworkCredential(username, password);
//creating payload;
fileReader = new StreamReader(SystemStrings.file_Location + SystemStrings.file_Name);
byte[] file = Encoding.UTF8.GetBytes(fileReader.ReadToEnd());
fileReader.Close();
ftpRequest.ContentLength = file.Length;
//using the payload
Stream stream = ftpRequest.GetRequestStream(); <---- Throws WebException here
stream.Write(file, 0, file.Length);
stream.Close();
//handling the response;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpResponse.Close();
//If we haven't gotten an exception at this point, everything succeeded, so let's return the details
cred.Username = username;
cred.Password = password;
return true;
}
catch (WebException we)
{
...
}
catch (Exception e)
{
...
}
我得到的错误是由WebException捕获但没有解释任何内容,并且我在它抛出WebException时可以找到的唯一错误是ContentType抛出NotSupportedException,但根据MSDN它应该总是这样做是什么?
一些额外信息:
有什么建议吗?
-Peter