C# HttpWebRequest.GetResponse()通过https向ELB后面的EC2发送SendFailure

C# HttpWebRequest.GetResponse()通过https向ELB后面的EC2发送SendFailure,c#,.net,amazon-web-services,amazon-ec2,C#,.net,Amazon Web Services,Amazon Ec2,我们的.NET代码使用JSON发布到HTTPS REST API。它可以在Vista以上的机器上运行(我想它们都有.NET4.5),但是,我们需要支持down,才能用.NET4.0赢得XP,在这台机器上,我们的代码在下面显示的最后一行失败 如果我们将URI从HTTPS更改为HTTP,它可以正常工作。您在下面看到的许多行(例如CertificateValidationCallBack)都是为了修复此问题而添加的 大旗:我们注意到,在这台XP机器上,IE8通过HTTPS提供了“InternetExp

我们的.NET代码使用JSON发布到HTTPS REST API。它可以在Vista以上的机器上运行(我想它们都有.NET4.5),但是,我们需要支持down,才能用.NET4.0赢得XP,在这台机器上,我们的代码在下面显示的最后一行失败

如果我们将URI从HTTPS更改为HTTP,它可以正常工作。您在下面看到的许多行(例如CertificateValidationCallBack)都是为了修复此问题而添加的

大旗:我们注意到,在这台XP机器上,IE8通过HTTPS提供了“InternetExplorer无法显示网页”,尽管HTTP很好。我们添加了
CertificateValidationCallBack
处理程序,希望它能够解决这个问题。我不确定是不是

有关服务器配置的一些信息。它是ELB后面的EC2实例。ELB持有SSL证书,并将从端口443接收的数据发送到端口80。EC2实例上的Apache只处理端口80

补充:sslchecker.com显示了良好的证书

private static bool CertificateValidationCallBack(
        object sender, 
        System.Security.Cryptography.X509Certificates.X509Certificate certificate, 
        System.Security.Cryptography.X509Certificates.X509Chain chain, 
        System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
    return true;
}

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
webRequest.PreAuthenticate = true;

using (var client = new WebClient())
{
    client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
    try
    {
        string responseString ;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
        ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;
        _webEx = null;
        webRequest.ContentType = "application/json";
        webRequest.Method = "POST";
        byte[] bytes = System.Text.Encoding.ASCII.GetBytes(credsString);
        //  webRequest.ContentLength = bytes.Length;
        webRequest.KeepAlive = false;
        webRequest.Timeout = -1;
        System.IO.Stream os = webRequest.GetRequestStream();
        os.Write(bytes, 0, bytes.Length); //Push it out there
        os.Close();
        System.Net.WebResponse resp = webRequest.GetResponse();
        . . . . .
    }
}

这个问题解决了吗?经历了类似的事情后,我最终无法在XP上的任何VS版本中使用它。如果我把它打包并在XP上运行,它会工作吗?大概不知道我们现在正在开发Vista并为此项目赢得8分。对不起,我帮不了你了,没事的!谢谢你的回复