Si le proxy FTP permet de spécifier toutes les informations sur la cible via USER
et PASS
commandes, vous pouvez utiliser le Credentials
property.
En règle générale, vous spécifiez le nom d'utilisateur sous une forme [email protected]@host
et mot de passe sous une forme [email protected]
:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://proxy/path");
request.Credentials = new NetworkCredential("[email protected]@host", "[email protected]");
Si le proxy ne nécessite pas d'authentification, utiliser un formulaire [email protected]
et password
:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://proxy/path");
request.Credentials = new NetworkCredential("[email protected]", "password");
Mais votre serveur proxy peut également nécessiter une syntaxe différente, par exemple:
- commandes séparées pour
USER
utilisateur proxy et l'utilisateur hôte cible
OPEN
commande
SITE
commande
Dans ces cas, vous ne pouvez pas utiliser le FtpWebRequest
. Vous devez utiliser une bibliothèque cliente FTP tierce à la place.
Par exemple avec WinSCP .NET assembly, vous pouvez utiliser:
// 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
}
Pour les options du SessionOptions.AddRawSettings
, voir raw settings.
Plus facile est à configure the proxy settings in WinSCP GUI et l'avez generate C# FTP code template pour vous.
Notez que l'assembly WinSCP .NET n'est pas une bibliothèque .NET native. Il s'agit plutôt d'un wrapper .NET fin sur une application de console.
(je suis l'auteur de WinSCP)
Je ne suis pas sûr que je serais capable de balancer, mais il ressemble une solution décente. La lecture de leur site suggère également qu'il n'est tout simplement pas possible d'utiliser un proxy FTP avec ce qui est fourni dans le .NET CLR. –