Как я могу сделать в C # / Windows7, чтобы мое приложение не использовало существующее соединение SSL. На самом деле, когда я делаю запрос get с HttpWebRequest
на страницу https, если существует существующее соединение, тогда оно использует это соединение (= тот же ssl-sessionid). Я сделал несколько тестов, и Windows 7 пересмотреть соединение ssl через 2 минуты. Но я сделаю так, чтобы оно никогда не использовало существующее соединение.
Я много чего перепробовал:
keep-alive, ClientCacheTime (regedit), ServicePointManager.SetTcpKeepAlive
...
Большое спасибо!
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
ServicePointManager.DnsRefreshTimeout = 200;
/* ServicePointManager.SetTcpKeepAlive(false,0,0);
ServicePointManager.DefaultConnectionLimit = 100;
ServicePointManager.MaxServicePointIdleTime = 1;*/
// ServicePointManager.DefaultConnectionLimit = 1;
uri = "https://server.com/test.jsp";
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(uri);
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)";
request.CookieContainer = cookieJar;
request.ContentType = "text/xml";// content type
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version11;
request.Method = "GET";
request.ConnectionGroupName = "dsd" + i;
// request.ReadWriteTimeout = 2000;
/* request.Timeout = 5000;
request.UseDefaultCredentials = false;
request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
request.ConnectionGroupName = DateTime.Now.Ticks.ToString(); */
// X509Certificate2 cert = new X509Certificate2("C:\\a.crt", "abcd");
X509Certificate2 cert = new X509Certificate2();
request.ClientCertificates.Add(cert);
/* request.PreAuthenticate = false;
request.Pipelined = true;*/
WebResponse rsp = request.GetResponse();
string PageContent = new StreamReader(rsp.GetResponseStream()).ReadToEnd();
textBox1.Text = PageContent;
request.ServicePoint.CloseConnectionGroup("dsd" + i);
request.Abort();
request.ClientCertificates.Clear();
rsp.GetResponseStream().Close();
rsp.Close();
request.Abort();