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>
davy.ai
El mensaje de error sugiere que la conexión se cerró inesperadamente. Algunas posibles soluciones a este problema son:
System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) = > true;
request.UserAgent = "Su agente de usuario";
request.ProtocolVersion = HttpVersion.Version11;