我一直在尝试使用Visual连接到远程C#服务器,并列出服务器上的文件夹。最后,我试图弄清楚如何通过单击按钮自动将文件上传到此服务器。我想我的第一步应该是看看文件夹在远程FTP服务器上是如何构造的。但是,当我尝试查看debug中传递的结果时,它看起来是空的,尽管我没有从进程中收到任何错误,并且debug中的参数使我看起来像是成功登录。我还在响应数据中接收到文件传输完成消息226。以下是我尝试过的最新代码,尽管我已经尝试过FtpWebRequest函数中的各种方法。如果我关闭了UsePassive,它将永远在那里,并且我永远不会从服务器得到响应。有没有人对可能导致这种情况的设置或需要设置的一些参数有什么想法?
private void button4_Click(object sender, EventArgs e)
{
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://sampleftpplace.com/");
ftpRequest.UseBinary = true;
ftpRequest.Credentials = new NetworkCredential("username", "password");
ftpRequest.EnableSsl = true;
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpRequest.Proxy = null;
ftpRequest.Timeout = -1;
ftpRequest.KeepAlive = false;
//ftpRequest.UsePassive = false;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
List<string> directories = new List<string>();
string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
directories.Add(line);
line = streamReader.ReadLine();
}
streamReader.Close();
}当执行"string line = streamReader.Readline();“时,变量"line”为null。我真正想要的是看看哪些文件夹是可用的,这样我就可以看到FTP服务器的原始程序员是如何构造他们的文件夹的,以及他们使用了什么命名约定。如果那个程序员不再有空,这是可能的吗?
发布于 2015-04-22 03:37:49
我刚刚有了一个疯狂的想法,结果证明它是有效的!基本上,我将前几行改为如下所示:
Uri uri = new Uri("ftp://sampleftpplace.com//");
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(uri);首先,我使用了命令Uri。不知道这是否重要,但真正重要的是URL地址中的第二个"/“。我认为在我添加这个之前,服务器并没有将其视为根目录。一旦我把它放进去,我现在就能看到文件夹了。谢谢!
https://stackoverflow.com/questions/29780660
复制相似问题