我正在编写一个小测试工具,它使用HttpWebRequest来加载测试服务器。我想要的 每次我尝试调用HttpWebRequest.GetResponse()时都会建立一个新的SSL会话而不是使用缓存中的会话。注意:我正在提供客户端证书,并使用SSL会话的相互身份验证。
有没有办法清除http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.clientcertificates.aspx中提到的SSL会话缓存?
答案 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