В SSIS Я использую задачу скрипта VB.NET для загрузки файла из папки FTP.
Сценарий следующий
Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.Net
Public Class ScriptMain
Public Sub Main()
Dim objWebClient As WebClient = New WebClient()
Dim strDownloadURL As String = "ftp://mydownloadhosting.com/myfolder/" + Dts.Variables("GetDate").Value.ToString() + "_daily.xml"
Dim strFileName As String = Dts.Variables("WorkingFile").Value.ToString()
Dim wp As WebProxy = New WebProxy("my.proxy.local", 1234)
objWebClient.Proxy = wp
objWebClient.Credentials = New System.Net.NetworkCredential("username", "password")
objWebClient.DownloadFile(strDownloadURL, strFileName)
Dts.TaskResult = Dts.Results.Success
End Sub
End Class
это работает правильно, но моя цель - управлять исключением, в частности, чтобы различать:
- файл не найден
- все другие проблемы (тайм-аут, проблема с прокси, ...)
Я провел некоторое исследование о том, как управлять исключениями с помощью WebClient()
, и обнаружил следующее:
которые они дают различные формы следующего:
try
{
// try to download file here
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
{
// handle the 404 here
}
}
else if (ex.Status == WebExceptionStatus.NameResolutionFailure)
{
// handle name resolution failure
}
}
Основная проблема в том, что мой код находится на VB.NET, а все опубликованные ответы написаны на C #, как можно создать try
/ catch
конструкцию для обработки исключения в моем коде?