Удаленный сервер вернул ошибку: (550) файл недоступен(произошла ошибка при создании каталога ftp)

Я разрабатываю приложение 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.

3 ответов


ваш код выглядит нормально.......вы говорите, что тоже получили разрешение. Единственная проблема заключается в том, что вы можете передать неправильный "источник", который вызывает проблему..Проверьте исходную строку, возможно, произошла ошибка......

путь должен быть как

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

это означает, что каталог будет создан с именем " directory12" если вы указываете путь, как это

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

это значит"ftp://host.com/directory123/ " должно уже существовать и новый каталог будет создан с именем " directory1234" надеюсь, это поможет


Если проблема является проблемой разрешений на стороне Windows Server, и у вас есть доступ к этому FTP-серверу, вы можете решить ее, изменив разрешение и добавив разрешение "запись" для имени пользователя, с которым вы аутентифицируетесь в фактическом физическом каталоге.

например, если 'ftp://host/ ' указывает на 'c:\inetpub\ftproot" на вашем сервере, затем разрешите разрешение "Write" для пользователя в этом каталоге.

я настраивал свой собственный IIS 7 FTP сервер и потратил хороший час или два, пытаясь получить такой простой фрагмент клиентского кода C# для работы, поэтому подумал, что я внесу свой вклад в подобные ситуации.


вы получаете эту ошибку, если директория уже существует. Довольно не описательное сообщение об ошибке (лол). Должен поставить try catch вокруг вызова запроса.GetResponse ()

try
{
FtpWebResponse ftpResp = request.GetResponse() as FtpWebResponse;

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