Если прокси-сервер FTP позволяет указывать всю информацию о цели с помощью команд USER
и PASS
, вы можете использовать свойство Credentials
.
Как правило, вы указываете имя пользователя в форме user@proxyuser@host
и пароль в форме password@proxypassword
:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://proxy/path");
request.Credentials = new NetworkCredential("user@proxyuser@host", "password@proxypassword");
Если прокси-сервер не требует аутентификации, используйте форму user@host
и password
:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://proxy/path");
request.Credentials = new NetworkCredential("user@host", "password");
Но вашему прокси-серверу может также потребоваться другой синтаксис, например:
- отдельные
USER
команды для пользователя прокси и целевого хостапользователь OPEN
команда SITE
команда
В этих случаях вы не можете использовать FtpWebRequest
.Вместо этого вы должны использовать стороннюю FTP-клиентскую библиотеку.
Например, WinSCP .NET сборка , вы можете использовать:
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = "host",
UserName = "user",
Password = "password",
};
// Configure proxy
sessionOptions.AddRawSettings("ProxyHost", "proxy");
sessionOptions.AddRawSettings("FtpProxyLogonType", "2");
sessionOptions.AddRawSettings("ProxyUsername", "proxyuser");
sessionOptions.AddRawSettings("ProxyPassword", "proxypassword");
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Your code
}
Для параметров SessionOptions.AddRawSettings
, см. необработанные настройки .
Проще всего настроить параметры прокси в WinSCP GUI и получить генерировать C # FTPшаблон кода для вас.
Обратите внимание, что сборка WinSCP .NET не является нативной библиотекой .NET.Это довольно тонкая оболочка .NET над консольным приложением.
(я автор WinSCP)