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

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

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...