Задача сценария C # в SSIS для объединения двух переменных SSIS, передачи результата в класс Webclient, а затем записи вывода (JSON) в третью переменную SSIS - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь взять две переменные SSIS, объединить их, передать их в класс Webclient и записать результат в третью переменную SSIS. Эта третья переменная затем записывается в базу данных.

При отладке скрипта созданная конкатенированная строка возвращает правильный вывод, когда я вставляю ее в нее в веб-браузере (он создает JSON), но она просто возвращает общее сообщение об ошибке, когда я запускаю его как часть служб SSIS. пакет.

Как вы, вероятно, можете сказать, я очень новичок в написании C #, но я приложил все усилия, чтобы изучить его.

Любая помощь от вас, ребята, будет принята с благодарностью.

Вот что у меня есть:

public void Main()
{
    var url = Dts.Variables["User::URL"].Value.ToString();
    var inputJSON = Dts.Variables["User::inputJSON"].Value.ToString();
    var fullurl = (url + inputJSON);


    using (var webClient = new System.Net.WebClient())
    {
        var json = webClient.DownloadString(fullurl);


        Dts.Variables["User::outputJSON"].Value = json;



        Dts.TaskResult = (int)ScriptResults.Success;
    }

}

#region ScriptResults declaration
/// <summary>
/// This enum provides a convenient shorthand within the scope of this class for setting the
/// result of the script.
/// 
/// This code was generated automatically.
/// </summary>
enum ScriptResults
{
    Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
    Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion

}

1 Ответ

0 голосов
/ 29 июня 2018

Похоже, что ваш веб-сервис проверяет пользовательский агент по запросу, попробуйте добавить один, как показано ниже (например, имитация агента Mozilla). Пользовательский агент должен быть включен в заголовок запроса.

using (var webClient = new System.Net.WebClient())
{
    webClient.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

    var json = webClient.DownloadString(fullurl);
    Dts.Variables["User::outputJSON"].Value = json;
    Dts.TaskResult = (int)ScriptResults.Success;
}

Больше информации о пользовательских агентах с WebClient здесь: https://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

...