【问题标题】:Listing parent directory of FTP home path列出 FTP 主路径的父目录
【发布时间】:2017-04-11 08:09:28
【问题描述】:

我必须列出 FTP 目录../Catalogue/

它在 .NET 4.0 中运行,但在 .NET 4.5.2 中不再运行。

如我所见,在 .NET 4.5.2 中,URI 正在发生变化。 ../ 被删除。

有谁知道如何将../ 保留在我的请求或相同的替代解决方案中。

Dim request As FtpWebRequest =
    DirectCast(WebRequest.Create(
        New Uri("ftp://" + FTPServer + "/%2E%2E/Catalogue/")), FtpWebRequest)
request.Proxy = Nothing
request.UsePassive = True
request.UseBinary = True
request.KeepAlive = False
request.Credentials = New NetworkCredential("", "")
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails
Dim response As WebResponse = request.GetResponse()

【问题讨论】:

  • “正如我所见” - 你是怎么看到的?给我们看一看! + 你能使用独立的 FTP 客户端列出../Catalogue 目录吗?向我们展示它的日志文件。
  • 在调试 URI 属性“RequestUri”时,我可以看到类似“ftp://”+ FTPServer +“/Catalogue/”。
  • 好的,我的问题的另一部分?
  • 是的,我也可以使用独立的 FTP 客户端列出目录。如果我可以从 cmd 尝试它工作正常。因为我的代码适用于 4.0,但不适用于 v4.5.2。如果您需要我提供更多信息,请告诉我。
  • 如果你用 cmd 登录并输入pwd,你会得到什么?

标签: .net vb.net url ftp uri


【解决方案1】:

ftp://www.example.com/../Catalogue 不是有效的 URL,imo。虽然它可能在过去的 .NET 版本中有效,但它不再有效也就不足为奇了。

您不应在 URL 中使用 ..。如果,它必须在一些实际路径之后,所以你有任何地方可以返回。您的 URL 实际上看起来像是在尝试超越 FTP 根目录。这是不可能的。

但是从你模糊的 cmets 来看,很明显你实际上是在尝试从主路径(非 chrooted)上升。

只需使用实际路径:ftp://www.example.com/something/Catalogue,其中something 是您在屏幕截图中屏蔽的路径。


如果something由于某种原因发生了变化,您可以使用PrintWorkingDirectory方法找出它:

Dim pwdRequest As FtpWebRequest =
    DirectCast(WebRequest.Create(
        New Uri("ftp://" + FTPServer + "/")), FtpWebRequest)
pwdRequest.Method = WebRequestMethods.Ftp.PrintWorkingDirectory
Dim response As FtpWebResponse = pwdRequest.GetResponse()
Dim path As String = response.StatusDescription
Dim i As Integer = path.IndexOf("""")
If i > 0 Then
    path = path.Substring(i + 1)
    i = path.IndexOf("""")
    If i > 0 Then
        path = path.Substring(0, i)

        Dim request As FtpWebRequest =
            DirectCast(WebRequest.Create(
                New Uri("ftp://" + FTPServer + path + "../")), FtpWebRequest)

        ' Your code here
    End If
End If

【讨论】:

  • 感谢您的回答。我掩盖了我登录时使用的用户名。这对每个用户来说都是动态的。是的,实际上它似乎不是正确的 URL,但该技巧在过去的版本中有效。您有什么想法吗,是否有任何替代方法可以使用 VB.net 4.5.2 在 ftp 中更改路径?感谢您对我的帮助。
  • 你知道用户名,所以你现在的路径,有什么问题?
  • 不管怎样,看我的回答。
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多