我正在向使用SSL证书的网站发出请求。因此,如果我这样做:
var webClient = new WebClient();
webClient.DownloadData("https://link1"); // 1
webClient.DownloadData("https://link2"); // 2
在这两种情况下,我都在交换公钥和私钥,因为webclient没有保存会话权限?
然后我相信我需要一个能够识别cookie的WebClient类。所以我用Google搜索了一下,然后我想出了:https://stackoverflow.com/a/11523836/637142
如果我使用该课程并执行:
var webClient2 = new WebClientEx(); // this class is on the link
webClient2.DownloadData("https://link1"); // 1
webClient2.DownloadData("https://link2"); // 2
现在我不需要第二次交换公钥和私钥吗?
无论如何,现在我的问题是我需要能够做到:
var webClient2 = new WebClientEx(); // this class is on the link
Task.Fatory.StartNew(()=>
webClient2.DownloadData("https://link1"); // 1
);
Task.Fatory.StartNew(()=>
webClient2.DownloadData("https://link2"); // 2
);
因为WebClient
只能一次下载数据而引发异常。结果我做了:
Task.Fatory.StartNew(()=>
new WebClient().DownloadData("https://link1"); // 1
);
Task.Fatory.StartNew(()=>
new WebClient().DownloadData("https://link2"); // 2
);
虽然有效,但效率不高,因为每次请求我都会交换公钥和私钥
PS: 注意我对SSL知之甚少,因此如果我假设出错了,请纠正我。也许SSL不使用会话来维护对称密钥。换句话说,我不明白为什么只有Web浏览器中的第一个请求才需要很长时间。第一次请求后,一切都很快。我假设对称密钥存储在会话中。
答案 0 :(得分:0)
如果你想使用相同的会话,你可以使用cookiecontainer,你可以使用新的WebclienEx(CookieContainer),每个webclient实例使用相同的cookiecontainer来使用相同的会话。