Пакет служб SSIS, вызывающий REST API, завершается ошибкой через 1 минуту - PullRequest
0 голосов
/ 25 октября 2018

Я создал пакет служб SSIS с ScriptTask для вызова API REST.

Ниже приведена задача сценария C #, которую я написал в пакете служб SSIS:

public void Main()
{            
    string serviceHostUrl = Dts.Variables["ParameterTestServiceHostURL"].Value.ToString();            
    string serviceHostApiKey = Dts.Variables["ParameterTestServiceHostApiKey"].Value.ToString();
    string apiName = Dts.Variables["ParameterApiName"].Value.ToString();
    string serviceHostApiEndPoint = String.Format("{0}/json/reply/{1}", serviceHostUrl, apiName);
    string requestData = Dts.Variables["ParameterRequestData"].Value.ToString();
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceHostApiEndPoint);
    request.Method = "POST";
    request.ContentType = "application/json";
    request.ContentLength = requestData.Length;
    request.Headers.Add("x-api-key", serviceHostApiKey);
    request.Timeout = 3600000; //1 hour timeout
    StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
    requestWriter.Write(requestData);
    requestWriter.Close();            

    try
    {
        WebResponse webResponse = request.GetResponse();
        Stream webStream = webResponse.GetResponseStream();
        StreamReader responseReader = new StreamReader(webStream);
        string response = responseReader.ReadToEnd();
        Console.Out.WriteLine(response);
        responseReader.Close();
        Dts.TaskResult = (int)ScriptResults.Success;
    }
    catch (Exception e)
    {
        Console.Out.WriteLine("-----------------");
        Console.Out.WriteLine(e.Message);
        Dts.TaskResult = (int)ScriptResults.Failure;
    }
}

Я установилЯвный тайм-аут в течение 1 часа, но он по-прежнему завершается ошибкой со следующей ошибкой ровно через 1 минуту выполнения, но я вижу, что служба продолжает обрабатывать, пока все ее операции не будут завершены.Это означает, что выполнение службы выполнено успешно, но пакет служб SSIS выдает исключение.

Выполнено как пользователь: qasql_svc.----------------- Базовое соединение было закрыто: при получении произошла непредвиденная ошибка.Microsoft (R) SQL Server Execute Package Utility версии 11.0.6020.0 для 64-разрядных продуктов. Copyright (C) Microsoft Corporation.Все права защищены.Начато: 8:02:06. Ошибка: 2018-10-24 08: 03: 07.25 Код: 0x00000006 Источник: InvokeAPI Описание: Сценарий вернул результат ошибки.Ошибка завершения DTExec: выполнение пакета вернуло DTSER_FAILURE (1).Начато: 8:02:06. Закончено: 8:03:07. Прошло: 60.422 секунд.Не удалось выполнить пакет.Шаг завершился неудачей.

Когда я пытаюсь запустить тот же API REST через Postman, я могу видеть статус успеха без каких-либо исключений, что заставляет меня поверить, что нет проблем с REST API или его конфигурацией.Но что-то отсутствует или требует исправления в пакете служб SSIS или на уровне его конфигурации.

Может кто-нибудь предложить здесь?

Спасибо

...