FTP -Spezialcharakter im Passwort?
-
26-10-2019 - |
Frage
Ich versuche, mich bei einem FTP -Server anzumelden. Verwenden Sie den folgenden Code in 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();
Das Login schlägt jedoch fehl, wenn das Passwort einige spezielle Zeichen für Zeichen enthält. zB ('!' oder '£')? Ich bekomme die folgende Ausnahme.
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()
Ich bekomme keine Ausnahme, wenn das Passwort keine Sonderzeichen enthält.
Keine korrekte Lösung
Andere Tipps
Welcher FTP -Server ist das? Können Sie sich mit anderen Programmen anmelden? Wenn ja, verwenden Sie Wireshark Um zu vergleichen, was über den Draht geht.
Es ist also wahrscheinlich nur eine Ansi -Codierung, also versuchen Sie es also
var secureString = new SecureString();
foreach (var b in Encoding.Default.GetBytes("password!#£"))
secureString.AppendChar((char)b);
request.Credentials = new NetworkCredential("userName", secureString);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow