FTP caractère spécial dans votre mot de passe?
-
26-10-2019 - |
Question
Je suis en train de se connecter à un serveur ftp. En utilisant le code suivant en C #.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp-server");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
// This example assumes the FTP site uses anonymous logon.
//request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequired;
request.Credentials = new NetworkCredential("userName", "password!#£");
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Cependant, la connexion échoue lorsque le mot de passe contient des charaters spéciales. par exemple ( '!' ou '£')? Je reçois l'exception suivante.
Unhandled Exception: System.Net.WebException: The remote server returned an error: (530) Not logged in.
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.Net.FtpWebRequest.RequestCallback(Object obj)
at System.Net.CommandStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.Stream.Dispose()
at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Bo
ean canReuse)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetResponse()
at FtpClientTest.Program.FtpWebRequest()
Je ne suis pas une exception lorsque le mot de passe ne contient pas de caractères spéciaux.
Pas de solution correcte
Autres conseils
quel serveur ftp est-il? pouvez-vous grâce à la connexion d'autres programmes? Si oui, utilisez Wireshark pour comparer ce qui se passe sur le fil.
Il est donc probablement l'encodage ANSI, alors essayez
var secureString = new SecureString();
foreach (var b in Encoding.Default.GetBytes("password!#£"))
secureString.AppendChar((char)b);
request.Credentials = new NetworkCredential("userName", secureString);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow