底层连接已关闭。(HttpWebRequest)

3

我有一个HttpWebRequest,之前一直是可以工作的,但几周后它突然停止工作并开始抛出一个错误:

以下是我的代码:

底层连接已关闭: 发送时发生意外错误

HttpWebRequest FirstRequest = null;
HttpWebRequest postRequest = null;
HttpWebResponse response = null;
try
{
    FirstRequest = (HttpWebRequest)WebRequest.Create("https://my.emerchantpay.com");
    FirstRequest.CookieContainer = new CookieContainer();
    FirstRequest.CookieContainer = _cookies;
    FirstRequest.Accept = @"text/html, application/xhtml+xml, */*";
    FirstRequest.Referer = @"https://my.emerchantpay.com";
    FirstRequest.Headers.Add("Accept-Language", "en-GB");
    FirstRequest.UserAgent = @"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)";
    FirstRequest.Host = @"my.emerchantpay.com";
    response = (HttpWebResponse)FirstRequest.GetResponse();//here is error
}catch{}

我做错了什么?


使用 Fiddler 调试这些场景... - Matías Fidemraizer
URL中包含https协议。你不打算使用任何身份验证吗? - Amit Kumar Ghosh
2个回答

5
经过长时间的研究,我找到了答案。
您需要添加ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
 FirstRequest = (HttpWebRequest)WebRequest.Create("https://my.emerchantpay.com");
                    FirstRequest.CookieContainer = new CookieContainer();
                    FirstRequest.CookieContainer = _cookies;
                    FirstRequest.Accept = @"text/html, application/xhtml+xml, */*";
                    FirstRequest.Referer = @"https://my.emerchantpay.com";
                    FirstRequest.Headers.Add("Accept-Language", "en-GB");
                    FirstRequest.UserAgent = @"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)";
                    FirstRequest.Host = @"my.emerchantpay.com";

                    response = (HttpWebResponse)FirstRequest.GetResponse();

在.NET 4.0中(其中缺少SecurityProtocolType.Tls12),您需要使用(SecurityProtocolType) 0xc00 - 请参见https://dev59.com/0VYN5IYBdhLWcg3wi4ro#51346252。 - Dan

0
在添加了以下两行代码后:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

FirstRequest.Keepalive = false;

对我来说起作用了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接