Есть сообщение в блоге от Марии Атанасовой, которое показывает, как вы можете подделать его - в основном вы должны поместить каталог в URL.
Я подозреваю, что вам, возможно, будет лучше с выделенной библиотекой FTP, которая не пытается навязать все в WebRequest. Я лично не использовал сторонние библиотеки для этого, но поиск «FTP library .NET» находит много кандидатов.
Редактировать: jcolebrand (в случае возможности linkrot в блоге 2006 года)
Многие клиенты спрашивают нас, как они могут использовать команду CWD с нашим FtpWebRequest.
Ответ таков: вы не можете использовать команду напрямую, но вы можете изменить параметр uri для достижения того же результата.
Допустим, вы используете следующий формат:
String uri = "ftp://myFtpUserName:myFtpUserPassword@myFtpUrl";
FtpWebRequest Request = (FtpWebRequest)WebRequest.Create(uri);
Request.Method = "LIST";
Приведенный выше пример приведет вас в каталог вашего пользователя и перечислит все содержимое там. Теперь предположим, что вы хотите перейти на 2 каталога назад и перечислить содержимое там (при условии, что у вашего пользователя есть на это разрешение). Вы закрываете предыдущий запрос FtpWebRequest и выпускаете новый с этим uri
uri = "ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/%2E%2E/%2E%2E";
Это эквивалентно входу в систему с учетными данными вашего пользователя и последующему использованию cd ../../
Примечание: если вы попытаетесь использовать ”..”
напрямую, не выходя из них, класс uri лишит их, поэтому "ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/../.."
эквивалентно "ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/"
Теперь предположим, что вы хотите перейти в каталог другого пользователя, который находится на один уровень выше корня. Если вы не укажете имя пользователя и пароль, это равносильно входу в систему как анонимный пользователь. Затем вы выпускаете новый FtpWebRequest
со следующим URI
"ftp://myFtpUrl/%2F/anotherUserDir"
Это равносильно входу в систему как анонимному и затем
Cd /
cd anotherUserDirectory