C# 远程服务器返回错误:(550)文件不可用(设置ftp目录时出错)

C# 远程服务器返回错误:(550)文件不可用(设置ftp目录时出错),c#,.net,ftp,directory,C#,.net,Ftp,Directory,我正在开发一个wpf应用程序,我想使用不同用户名的C#在ftp上创建一个目录,如果已经存在,则将文件保存在现有目录上 我已成功创建检查现有目录的逻辑,但在创建新目录时,运行时出现异常: 远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。 我在互联网上检查了不同的解决方案,大多数人都说这是由于写权限。我正在分配ftp文件夹写入权限,但仍有问题。请帮忙 这是我的密码: static void CreateFtpFolder(string source) {

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

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

远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。

我在互联网上检查了不同的解决方案,大多数人都说这是由于写权限。我正在分配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

上出现错误,您的代码看起来很好……您是说您也分配了权限。 唯一的问题是,您可能传递了一个错误的“源”,这导致了问题。请检查您的源字符串,它可能有错误

路径应该是这样的

 WebRequest request = WebRequest.Create("ftp://host.com/directory123");
这意味着将创建名为“directory12”的目录 如果您正在指定这样的路径

 WebRequest request = WebRequest.Create("ftp://host.com/directory123/directory1234");
这意味着“”应该已经存在,并且将创建名为“directory1234”的新目录
如果目录已经存在,希望它能帮助您获得该错误。非常非描述性错误消息(lol)。必须在对request.GetResponse()的调用周围放置一个try catch


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

e、 g.如果“”指向服务器上的“c:\inetpub\ftproot”,则允许该用户在该目录上具有“写入”权限


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

尝试使用命令行FTP客户端复制错误。也许服务器返回的实际错误比您在代码中看到的信息更丰富?但是是的,这听起来像是一个可能的服务器端权限问题…嗨。我也犯了同样的错误。该应用程序适用于除此客户机之外的所有其他客户机。我们一直在尝试检查防火墙,但这并没有放弃任何工作。已经快一个月了,每天都在努力解决这个问题。目前,我使用远程计算机,将文件复制到本地PC,然后使用具有相同凭据的同一应用程序,它就可以工作了。你知道他为什么失败了吗?这不是个好主意。有很多可能发生的异常,而你却忽略了它们。
try
{
FtpWebResponse ftpResp = request.GetResponse() as FtpWebResponse;

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