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

cho*_*abs 23 .net c# ftp file-upload

我创建了一个小的Windows窗体应用程序,将文件上传到我们客户端的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();
Run Code Online (Sandbox Code Playgroud)

Mic*_* DN 33

由于服务器上没有文件,文件安全权限等原因,可能会导致此错误.

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

try
{
        //Your code
}
catch(WebException e)
{
        String status = ((FtpWebResponse)e.Response).StatusDescription;
}
Run Code Online (Sandbox Code Playgroud)

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

以下是您可以参考的一些链接

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-eg-file-not-found-没有访问/

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

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

  • 嗨,大家好.我没赢.我决定在另一台机器上托管这个应用程序.它工作正常.谢谢. (2认同)

小智 20

试试这个: ftp://xxx.xxx.xx.xx:21 //路径/文件名

服务器地址后面的"//"在根目录下启动.即使我有: ftp://xxx.xxx.xx.xx:21/path/filename,它也没有带我到正确的目录.

  • 这太可怕了,但它实际上对我有用 - 我很震惊,我想这应该是一个错误,但谢谢。 (2认同)
  • 惊人!这实际上解决了问题。谢天谢地,你写的。一百万年都不会猜到。 (2认同)

小智 7

我遇到了同样的问题,这就是我所做的:

  1. 检查操作系统是否有权写入.找到ftp文件夹=>右键单击=> properties => security,然后你必须知道你应该做什么
  2. 检查ftp服务器,打开您记录的用户的写权限.打开IIS =>单击ftp site => ftp授权规则=>添加允许规则=>选择用户或组来设置权限
  3. 检查ftp服务器上的目录,在第2项上执行相同的操作.

我可以使用四张图片来显示要设置的权限: 在此输入图像描述

在此输入图像描述 在此输入图像描述 在此输入图像描述