可以使用filezilla或winscp连接到FTP,但不能与ftpwebrequest或fluentftp

问题描述 投票:0回答:1
(425)无法打开数据连接

由于我能够使用同一台计算机的filezilla连接,我不确定如何进行故障排除。

这里是我的代码

FtpWebClient

我还尝试了FluentFTP。 这是我的代码。 我得到例外

无法构建数据连接:不允许操作。

public void FtpStuff() { string url = "ftp://my.server.com"; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url); request.Credentials = new NetworkCredential("myname", "password"); request.EnableSsl = true; request.Method = WebRequestMethods.Ftp.ListDirectory; FtpWebResponse response = (FtpWebResponse)request.GetResponse(); StreamReader streamReader = new StreamReader(response.GetResponseStream()); // This is the line that throws the exception string line = streamReader.ReadLine(); }
在这里是来自FluentFTP的记录信息。  我更改了真实的用户名和IP,但是其余数据(包括端口)是真实数据。  我的FTP服务提供商指定我必须在端口21上连接。问题似乎在发出

public void FtpStuff() { FtpClient client = new FtpClient(); client.Host = "my.server.com"; client.Credentials = new NetworkCredential("myname", "password"); client.EncryptionMode = FtpEncryptionMode.Explicit; client.Connect(); // This line gives me an exception. var files = client.GetListing(); }

命令并建立新端口上的连接后发生。
EPSV

我的filezilla logs。

# Connect() The thread 0x5514 has exited with code 0 (0x0). The thread 0xc80 has exited with code 0 (0x0). The thread 0x89d4 has exited with code 0 (0x0). Status: Connecting to 123.123.123.123:21 Response: 220 FTP Server Ready Command: AUTH TLS Response: 234 AUTH TLS successful Status: FTPS Authentication Successful Status: Time to activate encryption: 0h 0m 0s. Total Seconds: 0.1339995. Command: USER [email protected] The thread 0x6ddc has exited with code 0 (0x0). Response: 331 Password required for [email protected] Status: Testing connectivity using Socket.Poll()... Command: PASS *** Response: 230-*************************************************************************** Response: NOTICE TO USERS Response: This computer system is private property. It is for authorized use only. Response: Users (authorized or unauthorized) have no explicit or implicit Response: expectation of privacy. Response: Response: Any or all uses of this system and all files on this system may be Response: intercepted, monitored, recorded, copied, audited and inspected by Response: using this system, the user consents to such interception, monitoring, Response: recording, copying, auditing, inspection, and disclosure at the Response: discretion of such personnel or officials. Unauthorized or improper use Response: of this system may result in civil and criminal penalties and Response: administrative or disciplinary action, as appropriate. By continuing to Response: use this system you indicate your awareness of and consent to these terms Response: and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the Response: conditions stated in this warning. Response: **************************************************************************** Response: 230 User [email protected] logged in Command: PBSZ 0 Response: 200 PBSZ 0 successful Command: PROT P Response: 200 Protection set to Private Command: FEAT Response: 211-Features: Response: AUTH TLS Response: CCC Response: CLNT Response: EPRT Response: EPSV Response: HOST Response: MDTM Response: MFF modify;UNIX.group;UNIX.mode; Response: MFMT Response: MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.groupname*;UNIX.mode*;UNIX.owner*;UNIX.ownername*; Response: PBSZ Response: PROT Response: REST STREAM Response: SIZE Response: SSCN Response: TVFS Response: 211 End Status: Text encoding: System.Text.ASCIIEncoding Command: SYST Response: 215 UNIX Type: L8 # GetListing(null, Auto) # GetWorkingDirectory() Command: PWD Response: 257 "/" is the current directory Command: TYPE I Response: 200 Type set to I # OpenPassiveDataStream(AutoPassive, "MLSD /", 0) Command: EPSV Response: 229 Entering Extended Passive Mode (|||50304|) Status: Connecting to 123.123.123.123:50304 Command: MLSD / Response: 150 Opening BINARY mode data connection for MLSD Status: FTPS Authentication Successful Status: Time to activate encryption: 0h 0m 0s. Total Seconds: 0.1210002. +---------------------------------------+ ----------------------------------------- Status: Disposing FtpSocketStream... # CloseDataStream() Response: 425 Unable to build data connection: Operation not permitted Status: Disposing FtpSocketStream... Exception thrown: 'FluentFTP.FtpCommandException' in FluentFTP.dll
i也可以使用winscp连接。如注释中所建议的,我确实检查了打开数据连接时是否重复使用TLS/SSL会话ID。看来是。
Status: Resolving address of mysite.com Status: Connecting to 123.123.123.123:21... Status: Connection established, waiting for welcome message... Response: 220 FTP Server Ready Command: AUTH TLS Response: 234 AUTH TLS successful Status: Initializing TLS... Status: Verifying certificate... Status: TLS connection established. Command: USER [email protected] Response: 331 Password required for [email protected] Command: PASS ************ Response: 230-*************************************************************************** Response: NOTICE TO USERS Response: This computer system is private property. It is for authorized use only. Response: Users (authorized or unauthorized) have no explicit or implicit Response: expectation of privacy. Response: Response: Any or all uses of this system and all files on this system may be Response: intercepted, monitored, recorded, copied, audited and inspected by Response: using this system, the user consents to such interception, monitoring, Response: recording, copying, auditing, inspection, and disclosure at the Response: discretion of such personnel or officials. Unauthorized or improper use Response: of this system may result in civil and criminal penalties and Response: administrative or disciplinary action, as appropriate. By continuing to Response: use this system you indicate your awareness of and consent to these terms Response: and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the Response: conditions stated in this warning. Response: **************************************************************************** Response: 230 User [email protected] logged in Command: SYST Response: 215 UNIX Type: L8 Command: FEAT Response: 211-Features: Response: AUTH TLS Response: CCC Response: CLNT Response: EPRT Response: EPSV Response: HOST Response: MDTM Response: MFF modify;UNIX.group;UNIX.mode; Response: MFMT Response: MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.groupname*;UNIX.mode*;UNIX.owner*;UNIX.ownername*; Response: PBSZ Response: PROT Response: REST STREAM Response: SIZE Response: SSCN Response: TVFS Response: 211 End Status: Server does not support non-ASCII characters. Command: PBSZ 0 Response: 200 PBSZ 0 successful Command: PROT P Response: 200 Protection set to Private Status: Logged in Status: Retrieving directory listing... Command: PWD Response: 257 "/" is the current directory Command: TYPE I Response: 200 Type set to I Command: PASV Response: 227 Entering Passive Mode (123,123,123,123,197,68). Command: MLSD Response: 150 Opening BINARY mode data connection for MLSD Response: 226 Transfer complete Status: Directory listing of "/" successful

	

.NET框架不支持TLS/SSL会话重复使用。如果您的服务器需要它
(看起来像是什么,以及如今非常常见的事物,以及对安全性是什么好处)
,您将无法使用

227 Entering Passive Mode (???) MLSD Connecting to ??? ... Connection pending Data connection opened Trying reuse main TLS session ID Session ID reused 150 Opening data channel for directory listing of "/"

或FluentFTP。两者都使用TLS/SSL的.NET实现。 您将不得不使用使用自己的TLS/SSL实现的FTP库。 您可以使用
My
winscp.NET组装。

尽管与FluentFTP相反,但它不是本地.NET库,它对外部二进制具有依赖性。但这就是使它起作用的原因。

一些参考:

c# ssl ftp ftpwebrequest fluentftp
1个回答
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.