es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La conexión subyacente de SSIS fue cerrada: Se produjo un error inesperado durante el envío.

Estoy intentando hacer una llamada a una API dentro de un paquete SSIS. Puedo usar el mismo código en una clase de prueba regular y todo funciona como se espera. Probé algunas de las recomendaciones que he visto en stack overflow pero sin suerte.

Fallas en el GetRequestStream()

Error: La conexión subyacente se cerró: Se produjo un error inesperado en el envío.
Mensaje de error interno: No se puede leer datos de la conexión de transporte: La conexión existente fue cerrada de manera forzada por el host remoto.

Código:

        var request = (HttpWebRequest)WebRequest.Create(requestURL);
        var muaRequest = new MUARequest
        {
            designationType = "MUAP"
        };
        var data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(muaRequest));

        request.Method = "POST";
        request.ContentType = "application/json";
        request.ContentLength = data.Length;
        request.Timeout = Timeout.Infinite;
        request.KeepAlive = false;
        request.ProtocolVersion = HttpVersion.Version10;
        ServicePointManager.Expect100Continue = true;
        System.Net.ServicePointManager.SecurityProtocol = System.Net.ServicePointManager.SecurityProtocol | System.Net.SecurityProtocolType.Tls12;
        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        //var response = (HttpWebResponse)request.GetResponse();
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            if (response.StatusCode == HttpStatusCode.OK)
            {
                using (var responseStream = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(responseStream))
                    {
                        var content = reader.ReadToEnd();
                        results = JsonConvert.DeserializeObject<results>(content);
                    }
                }
            }
            else
            {
                results.ErrorCode = "Falló la solicitud HTTP.";
            }
        }</results>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la conexión se cerró inesperadamente. Algunas posibles soluciones a este problema son:

    • Asegurarse de que la URL del punto final de la API es correcta y se puede alcanzar desde el entorno del paquete SSIS.
    • Asegurarse de que ningún firewall o regla de seguridad de red esté bloqueando al paquete SSIS de acceder al punto final de la API.
    • Podría intentar agregar una línea para deshabilitar la verificación SSL, pero esto generalmente no se recomienda: System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) = > true;
    • Intentar agregar un agente de usuario personalizado a los encabezados de HttpWebRequest, ya que algunas API pueden requerir esto: request.UserAgent = "Su agente de usuario";
    • Cambiar la versión del protocolo para utilizar HttpVersion.Version11: request.ProtocolVersion = HttpVersion.Version11;

Comments are closed.