gpt4 book ai didi

c# - 密码中的FTP特殊字符?

转载 作者:行者123 更新时间:2023-11-30 12:50:50 25 4
gpt4 key购买 nike

我正在尝试登录到 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();

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

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()

当密码不包含任何特殊字符时,我没有得到任何异常。

最佳答案

它是什么ftp服务器?您可以使用其他程序登录吗?如果是,请使用 wireshark比较通过电线传输的内容。

所以很可能只是ANSI编码,所以试试

var secureString = new SecureString();
foreach (var b in Encoding.Default.GetBytes("password!#£"))
secureString.AppendChar((char)b);

request.Credentials = new NetworkCredential("userName", secureString);

关于c# - 密码中的FTP特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com