如何清除客户端.Net SSL会话缓存

时间:2011-03-09 19:09:18

标签: .net caching session ssl

我正在编写一个小测试工具,它使用HttpWebRequest来加载测试服务器。我想要的 每次我尝试调用HttpWebRequest.GetResponse()时都会建立一个新的SSL会话而不是使用缓存中的会话。注意:我正在提供客户端证书,并使用SSL会话的相互身份验证。

有没有办法清除http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.clientcertificates.aspx中提到的SSL会话缓存?

2 个答案:

答案 0 :(得分:6)

ServicePoint类有一个名为ReleaseAllConnectionGroups的内部方法,它在所有连接上设置KeepAlive = false然后释放它们。 This answer包含所需的所有反射,但在每个HttpWebRequest上设置KeepAlive = false将使客户端.Net SSL会话缓存保持清晰。

可能需要

SslEmptyCache清除SCHANNEL在本机代码级别执行的caching of SSL-SessionID和/或票证。

答案 1 :(得分:1)

我认为您正在寻找HttpRequestCacheLevel Enumeration值NoCacheNoStore

http://msdn.microsoft.com/en-us/library/system.net.cache.httprequestcachelevel.aspx

然后,您可以覆盖HttpRequestCachePolicy

http://msdn.microsoft.com/en-us/library/system.net.webrequest.cachepolicy.aspx