FTP,GetResponse(),错误550文件不可用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (157)

我创建了一个小窗口窗体应用程序将文件上传到我们客户的FTP站点之一。但我遇到的问题是,当我在本地机器上运行这个应用程序,它成功上传文件。但是,如果我在我们的服务器上运行这个程序,我得到这个错误消息;

远程服务器返回错误:(550)文件不可用(例如,文件未找到,无法访问文件),在这一行'objFTPRequest.GetRequestStream();'。

有人知道为什么吗?我需要配置防火墙吗?这是我的代码;

FileInfo objFile = new FileInfo(filename);
FtpWebRequest objFTPRequest;

// Create FtpWebRequest object 
objFTPRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/outbox/" + objFile.Name));

// Set Credintials
objFTPRequest.Credentials = new NetworkCredential(ftpUserName, ftpPassword);

// By default KeepAlive is true, where the control connection is 
// not closed after a command is executed.
objFTPRequest.KeepAlive = false;

// Set the data transfer type.
objFTPRequest.UseBinary = true;

// Set content length
objFTPRequest.ContentLength = objFile.Length;

// Set request method
objFTPRequest.Method = WebRequestMethods.Ftp.UploadFile;

// Set buffer size
int intBufferLength = 16 * 1024;
byte[] objBuffer = new byte[intBufferLength];

// Opens a file to read
FileStream objFileStream = objFile.OpenRead();


// Get Stream of the file
Stream objStream = objFTPRequest.GetRequestStream();

int len = 0;

while ((len = objFileStream.Read(objBuffer, 0, intBufferLength)) != 0)
{
    // Write file Content 
    objStream.Write(objBuffer, 0, len);

}

            objStream.Close();
            objFileStream.Close();
提问于
用户回答回答于

这个错误可能是由于文件不存在于服务器,文件上的安全权限等几个原因造成的。

首先你需要找出错误的确切原因。这可以通过使用以下代码实现,

try
{
        //Your code
}
catch(WebException e)
{
        String status = ((FtpWebResponse)e.Response).StatusDescription;
}

一旦你得到错误的确切原因,你可以继续解决它。

这里有一些你可以参考的链接

http://forums.asp.net/t/1777881.aspx/1

http://nickstips.wordpress.com/2010/10/25/c-ftp-upload-error-the-remote-server-returned-an-error-550-file-unavailable-e-g-file-not-found-no-access/

http://www.dreamincode.net/forums/topic/76361-file-upload-to-server/

http://forums.asp.net/t/1374306.aspx/1

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励