远程服务器返回错误:(550)文件不可用(在制作ftp目录时出错)

时间:2013-06-17 15:16:03

标签: c# .net ftp directory

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

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

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上收到错误。

3 个答案:

答案 0 :(得分:5)

你的代码看起来很好.......你说的是你也分配了许可。 唯一的问题是你可能传递了一个错误的“源”,导致问题。检查你的源字符串可能有错误......

路径应该像

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

它意味着将使用名称“directory12”创建目录 如果你正在指定这样的路径

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

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

答案 1 :(得分:3)

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

e.g。如果' ftp://host/'指向' c:\ inetpub \ ftproot'在您的服务器上,然后允许“写”'该目录上的用户权限。

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

答案 2 :(得分:1)

如果目录已存在,则会出现该错误。非常描述性的错误消息(lol)。必须在try.GetResponse()

的调用周围试一试
try
{
FtpWebResponse ftpResp = request.GetResponse() as FtpWebResponse;

}
catch ( Exception ex ) { /* ignore */ }