1
11
我刚在我们的一个dev服务器上测试过这个,实际上有一个由.NET ftpwebRequest发布的CWD: new connection from 172.16.3.210 on 172.16.3.210:21 (Explicit SSL) hostname resolved : devpc sending welcome message. 220 Gene6 FTP Server v3.10.0 (Build 2) ready... USER testuser testuser, 331 Password required for testuser. testuser, PASS **** testuser, logged in as "testuser". testuser, 230 User testuser logged in. testuser, OPTS utf8 on testuser, 501 Please CLNT first. testuser, PWD testuser, 257 "/" is current directory. testuser, CWD / testuser, change directory '/' -> 'D:\testfolder' --> Access allowed. testuser, 250 CWD command successful. "/" is current directory. testuser, TYPE I testuser, 200 Type set to I. testuser, PORT 172,16,3,210,4,127 testuser, 200 Port command successful. testuser, NLST testuser, 150 Opening data connection for directory list. testuser, 226 Transfer ok. testuser, 421 Connection closed, timed out. testuser, disconnected. (00d00:05:01) 创建ftpWebRequest对象时,甚至没有在URI中指定“/”。 如果调试或浏览源代码,则会使用一个名为“ftpcontrolstream”的类。参见调用堆栈: System.dll!System.Net.FtpControlStream.BuildCommandsList(System.Net.WebRequest req) Line 555 C# System.dll!System.Net.CommandStream.SubmitRequest(System.Net.WebRequest request = {System.Net.FtpWebRequest}, bool async = false, bool readInitalResponseOnConnect = true) Line 143 C# System.dll!System.Net.FtpWebRequest.TimedSubmitRequestHelper(bool async) Line 1122 + 0x13 bytes C# System.dll!System.Net.FtpWebRequest.SubmitRequest(bool async = false) Line 1042 + 0xc bytes C# System.dll!System.Net.FtpWebRequest.GetResponse() Line 649 C# 有一个名为buildcommandslist()的方法被调用。buildcommandslist()生成要发送到ftp服务器的命令列表。此方法包含以下代码片段:
当第一次连接到服务器m_PreviousServerPath时,newServerPath的值为“/”,并由名为getPathAndFileName()的函数计算(在该代码块之前调用了几行)。getPathAndFileName()如果未提供路径或如果在'ftp:/…'uri'的末尾显式附加了“/”,则将newServerPath计算为“/”。 因此,这当然最终会导致将cwd命令添加到命令管道中,因为该命令为空!=“/”。 简而言之,不幸的是,您不能覆盖这个行为,因为它在源代码中被烧掉了。 |
2
1
虽然这篇文章就像很久以前一样…没关系,我会在这里提供答案。
而不是使用
增加的
可以在msdn上找到更多信息 http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx 希望这有帮助。 |
3
0
我想我们以前也有类似的问题,但我不记得具体细节。 要防止.NET发出cd命令,请查看是否将要登录的用户的默认目录设置为要在其中工作的目录。您只需使用命令行ftp客户机来检查它。 |
4
0
这里有一个解决方案:使用这个由dan在c-sharpcorner.com制作的免费的开源ftp客户端库: http://www.c-sharpcorner.com/uploadfile/danglass/ftpclient12062005053849am/ftpclient.aspx 以下是上载文件的示例代码:
这个库可以在开箱即用的情况下正常工作,但也可以很容易地扩展和修改。 |
5
0
利用上面的信息,这对我很有效。 发送CWD ftpstate.ftprequest=获取请求(“ ftp://192.168.0.2/tmp/file2download “” 不发送CWD- ftpstate.ftprequest=获取请求(“ ftp://192.168.0.2//tmp/file2download “” 注意服务器IP(或名称)后面的// dotnet版本2.0
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |