远程服务器返回错误:(550)文件不可用(在创建ftp目录时发生错误)

本文关键字:错误 ftp 创建 返回 服务器 文件 | 更新日期: 2023-09-27 18:18:40

我正在开发一个wpf应用程序,我想在ftp上使用不同用户名的c#创建一个目录,如果它已经存在,那么将文件保存在现有目录上。

我已经成功创建了检查现有目录的逻辑,但在创建新目录时,我在运行时遇到了异常:

The remote server returned an error: (550) File unavailable (e.g., file not found, no access).

我在互联网上检查了不同的解决方案,大多数都说这是由于写权限。我正在分配ftp文件夹写权限,但我仍然有问题。请帮忙吗?

下面是我的代码:
    static void CreateFtpFolder(string source)
    {
        FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(source);
        request.Credentials = new NetworkCredential(ftpusername, ftppassword);
        request.Method = WebRequestMethods.Ftp.MakeDirectory;
        request.UsePassive = true;
        request.UseBinary = false;
        request.KeepAlive = false;
        request.Proxy = null;
        FtpWebResponse ftpResp = request.GetResponse() as FtpWebResponse;
    }

我在FtpWebResponse上有错误

远程服务器返回错误:(550)文件不可用(在创建ftp目录时发生错误)

您的代码看起来不错.......你是说你也有权限。唯一的问题是,你可能会传递一个错误的"源",这是导致问题..检查你的源字符串可能有一个错误......

路径应该像

 WebRequest request = WebRequest.Create("ftp://host.com/directory123");

表示创建名为"directory12"的目录如果您像这样指定路径

 WebRequest request = WebRequest.Create("ftp://host.com/directory123/directory1234");

这意味着"ftp://host.com/directory123/"应该已经存在,并且将创建名为"directory1234"的新目录。希望对大家有所帮助

如果问题是Windows服务器端权限问题,并且您可以访问该FTP服务器,您可以通过修改权限并为您正在进行身份验证的用户名在实际物理目录上添加'Write'权限来解决问题。

。如果'ftp://host/'指向服务器上的'c:'inetpub'ftproot',则允许用户在该目录上'Write'权限。

我正在设置我自己的IIS 7 FTP服务器,并花了一两个小时试图让这样一个简单的c#客户端代码片段工作,所以我认为我应该为那些在类似情况下的人做出贡献。

如果目录已经存在,则会得到该错误。相当非描述性的错误信息(lol)。必须在调用request.GetResponse()

时设置一个try catch
try
{
FtpWebResponse ftpResp = request.GetResponse() as FtpWebResponse;
}
catch ( Exception ex ) { /* ignore */ }