繁体   English   中英

C#FTP错误550

[英]C# ftp Error 550

我正在使用FtpWebRequest来创建目录Now,并且我会收到类似ftp error 550: File unavailable异常ftp error 550: File unavailable 尽管有时我可以成功建立目录,但始终会遇到此异常。

下面是我的CheckDir函数:

protected string CheckDir(string fullpath, string ip, string acc, string pwd)
{
    string[] path = fullpath.Split(slash[1]);

    bool result = false;

    FtpWebRequest request = (FtpWebRequest)(WebRequest.Create(ip + path[2]));
    request.Credentials = new NetworkCredential(acc, pwd);
    request.Method = WebRequestMethods.Ftp.GetDateTimestamp;
    request.Timeout = 10000;

    try
    {
        using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
        {
            result = true;
        }
    }
    catch (WebException ex)
    {
        FtpWebResponse response = (FtpWebResponse)ex.Response;

        if (response != null && response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
        {
            request = (FtpWebRequest)WebRequest.Create(ip + path[2]);
            request.Credentials = new NetworkCredential(acc, pwd);
            request.Method = WebRequestMethods.Ftp.MakeDirectory;
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = false;
            request.GetResponse();
            result = true;
        }
        else
        {
            result = false;
        }
    }

    if (result == true)
        return path[2];
    else
        return null;
}

我发现我有办法检查现有目录。 然后,我将ContainsListDirecotyDetails一起ListDirecotyDetails

这是我的功能:

protected string CheckDir(string fullpath, string c_ip, string c_acc, string c_pwd)
        {
            string[] path = fullpath.Split(slash[1]);

            bool result = false;

            try
            {
                if (WebRequestMethods.Ftp.ListDirectoryDetails.Contains(c_ip + path[2]))
                {
                    result = true;
                }
                else
                {
                    FtpWebRequest request = (FtpWebRequest)(WebRequest.Create(c_ip + path[2]));
                    request.Credentials = new NetworkCredential(c_acc, c_pwd);
                    request.Method = WebRequestMethods.Ftp.MakeDirectory;
                    request.KeepAlive = false;
                    try
                    {
                        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                        response.Close();
                    }
                    catch (Exception)
                    {
                        request.Abort();
                        result = false;
                    }
                    request.Abort();
                    result = true;
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

            if (result == true)
                return path[2];
            else
                return null;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM