Если 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 и использовать сгенерировать шаблон кода FTP C# для вас.
Обратите внимание, что сборка WinSCP .NET не является собственной библиотекой .NET. Это скорее тонкая оболочка .NET над консольным приложением.
(я автор WinSCP)
person
Martin Prikryl
schedule
07.04.2017