Erro de postagem de HTTP: uma conexão existente foi fechada à força pelo host remoto

Sei que houve várias postagens semelhantes a essa, mas ainda não encontrei uma solução. Estou tentando postar alguns xml em um gateway MPI, mas continuo recebendo o seguinte erro:

Não foi possível ler os dados da conexão de transporte: Uma conexão existente foi fechada à força pelo host remoto.

Abaixo está o código que estou usando atualmente, mas tentei praticamente todas as abordagens diferentes em que posso pensar e todas retornam o mesmo erro:

        string result = "";

        string xml = "<TNSAuthRequest><CardNumber>0123456789</CardNumber><ExpiryDate>1801</ExpiryDate><PurchaseAmt>750</PurchaseAmt><CurrencyCode>826</CurrencyCode><CurrencyExponent>2</CurrencyExponent><CountryCode>826</CountryCode><MerchantName>Mayflower</MerchantName><MerchantId>0123456789</MerchantId><MerchantData>abcdefghijklmnopqrstuvwxyz0123456789</MerchantData><MerchantUrl>example.com</MerchantUrl><NotificationURL>example.com/basket</NotificationURL></TNSAuthRequest>";

        var url = "https://mpi.securecxl.com";
        byte[] bytes = System.Text.Encoding.ASCII.GetBytes("xmldata=" + xml.ToString());

        ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate);

        var req = (HttpWebRequest)WebRequest.Create(url);
        req.AllowWriteStreamBuffering = true;
        req.ContentType = "text/xml";
        req.Method = "POST";
        //req.ContentLength = bytes.Length;
        req.KeepAlive = false;
        req.ProtocolVersion = HttpVersion.Version10;
        req.ServicePoint.ConnectionLimit = 1;
        //req.Timeout = -1;

        try
        {
            using (var writer = new StreamWriter(req.GetRequestStream(), Encoding.ASCII))
            {
                writer.WriteLine(bytes);
            }
            using (WebResponse resp = req.GetResponse())
            {
                using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
                {
                    result = sr.ReadToEnd().Trim();
                }
            }
        }
        catch (Exception ex)
        {
            result = ex.Message + "<br />" + ex.InnerException.Message + "<br /><br />" + xml.Replace("<", "&lt;");
        }

        ViewBag.result = result;

Estou basicamente vagando se alguém pode ver algo que pode estar errado com o código que pode estar causando esse erro ou se é mais provável que eu tenha problemas com eles? Tentei rodar no meu host local, nosso servidor ativo e meu próprio servidor privado (com um IP completamente diferente) e ainda assim obtive o mesmo resultado.

Alguma ideia?

questionAnswers(2)

yourAnswerToTheQuestion