密码中的FTP特殊字符?

Ami*_*abh 5 .net c# ftp ftpwebresponse

我正在尝试登录到 ftp 服务器。在 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();
Run Code Online (Sandbox Code Playgroud)

但是,当密码包含一些特殊字符时,登录会失败。例如('!' 或 '£')?我得到以下异常。

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() 
Run Code Online (Sandbox Code Playgroud)

当密码不包含任何特殊字符时,我不会得到任何例外。

ess*_*kar 1

它是什么 ftp 服务器?您可以使用其他程序登录吗?如果是,请使用wireshark来比较网络上的内容。

\n\n

所以它可能只是 ANSI 编码,所以尝试

\n\n
var secureString = new SecureString();\nforeach (var b in Encoding.Default.GetBytes("password!#\xc2\xa3"))\n    secureString.AppendChar((char)b);\n\nrequest.Credentials = new NetworkCredential("userName", secureString);\n
Run Code Online (Sandbox Code Playgroud)\n