【问题标题】:Downloading xml file from https url从 https url 下载 xml 文件
【发布时间】:2016-11-30 03:01:27
【问题描述】:

我在从 HTTPS 网站下载文件时遇到问题,我正在使用 vb。 我有这段代码,它很简单,但主要问题是它需要在 Visual Studio 2003 中。 这是代码

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim client As New WebClient
    ' Download string.
    client.DownloadFile("https://www.un.org/sc/suborg/sites/www.un.org.sc.suborg/files/consolidated.xml", "consolidated.xml")

End Sub

但在我开始项目后,我收到一条消息告诉我:

附加信息:底层连接已关闭:无法为 SSL/TLS 建立安全通道。

有什么方法可以绕过这个安全通道? 谢谢

【问题讨论】:

  • 唯一可行的解​​决方案是升级到 .NET 4.6 和 Visual Studio 2015 - 社区版是免费的。 .NET 1.1 不再受支持,可能根本没有 TLS 支持。那时甚至不存在 TLS 1.2。您只是无法使用 .NET 1.1 连接到使用 TLS 1.2 的现代站点

标签: .net vb.net https webclient visual-studio-2003


【解决方案1】:

按您的方式工作,但该文件需要是文件的完全限定路径,并且您必须具有写入权限。

尝试创建一个临时文件,看看是否可行:

    'create a temp file
    Dim path = IO.Path.GetTempPath()
    Dim fileName = Guid.NewGuid().ToString() + ".xml"
    Dim fullyQualifiedPath = IO.Path.Combine(path, fileName)

    'download the file
    Using client As New WebClient
        client.DownloadFile("https://www.un.org/sc/suborg/sites/www.un.org.sc.suborg/files/consolidated.xml", fullyQualifiedPath)
    End Using

    'show the file so we can see what we downloaded
    Process.Start(fullyQualifiedPath)

请注意,您应该将 WebClient 包装在 Using 块中,因为这会处理对象

【讨论】:

  • 我做了你告诉我的一切,但问题不在于路径。您编写的此代码将适用于 2008 年之后的所有版本,但不适用于 2003 年。我仍然通过安全通道收到相同的消息..谢谢
  • 好的,我无法测试
  • @СашкоМицевски 不再支持它所针对的 VS 2003 和 .NET 1.1。我严重怀疑 .NET 1.1 是否支持 TLS,更不用说 TLS 1.1 或 TLS 1.2。 TLS 1.2 在 4.5.2 中添加。 TLS 自动协商是在 4.6 中添加的。
【解决方案2】:

我用这行代码解决了我的问题

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls

如果有人需要:)

【讨论】:

  • 并非如此,您的代码可能很快就会中断。 SecurityProtocolType.Tls 是 TLS 1.0,它是旧的,在大多数站点中被 1.1 或 1.2 取代。您的代码硬编码了对 1.0 的依赖,并且会在您第一次遇到需要 1.2 的站点时中断。你真的,真的,真的必须升级到受支持的 .NET 版本
【解决方案3】:

@马特·威尔科

这就是我使用 https 得到的:

请求被中止:无法创建 SSL/TLS 安全通道。 在 System.Net.WebClient.DownloadFile(Uri 地址,字符串文件名) 在 System.Net.WebClient.DownloadFile(String address, String fileName)

使用 http 就可以了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2012-08-24
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多