2016-07-26 41 views
1

我有問題,從下載網站HTTPS文件,我用vb。 我有這樣的代碼,它的簡單,但主要的問題是,它必須在Visual Studio 2003中 下面是代碼上下載XML文件的URL

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安全通道。

任何方式來解決這個安全通道? 感謝

+0

唯一可行的解​​決方案是upgrad e到.NET 4.6和Visual Studio 2015 - 社區版是免費的。 .NET 1.1不再受支持,可能根本沒有TLS支持。那時TLS 1.2甚至不存在。你根本*不*連接到使用TLS 1.2使用.NET 1.1 –

回答

-1

我解決我的問題,這條線代碼

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls 

只是,如果有人需要:)

+1

並非如此,您的代碼可能很快就會中斷。 'SecurityProtocolType.Tls'是TLS 1.0,其* *是舊的,在大多數站點中被替換爲1.1或1.2。你的代碼對1.0的依賴性進行硬編碼,並且會在你第一次遇到一個需要1.2的站點時破壞它。你真的真的必須升級到受支持的.NET版本 –

0

,當你擁有它,文件必須是完全合格的路徑到一個文件,你必須有權限寫入到它的工作原理。

嘗試創建一個臨時文件,看看是否可行:

'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) 

請注意,您應該穿得Web客戶端在使用塊作爲這個目標的處置

+0

我所做的一切,你告訴我,一個現代化的網站,但問題是不與路徑。此代碼,您寫了2008年以後的所有版本都可以工作,但不是2003年 上我仍然與安全channel..thanks得到相同的消息 –

+0

OK,我不能測試 –

+1

@СашкоМицевски既不VS 2003,也不.NET它所針對的1.1版本已經得到了支持。我嚴重懷疑.NET 1.1是否支持TLS,更不用說TLS 1.1或TLS 1.2。 4.5.2中增加了TLS 1.2。 4.6中增加了TLS自動協商。 –