Удаленный сервер вернул ошибку: (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 */ }