2011-03-09 15 views
6

Estoy escribiendo una pequeña herramienta de prueba, que utiliza HttpWebRequest para cargar la prueba de un servidor. Deseo cada vez que intento llamar a HttpWebRequest.GetResponse() para que establezca una nueva sesión SSL en lugar de usar la que está en la caché. Nota: Estoy suministrando un certificado de cliente y utilizando Autenticación mutua para la sesión SSL.Cómo borrar el caché de la sesión SSL de .Net SSL

¿Hay alguna manera de borrar el caché de sesión SSL al que se hace referencia en http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.clientcertificates.aspx?

Respuesta

1

pienso que usted está buscando el valor NoCacheNoStore HttpRequestCacheLevel Enumeración

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

Luego, puede sobrescribir el HttpRequestCachePolicy

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

+2

Pero esto es el almacenamiento en caché a nivel HTTP, ¿no es así? El OP solicitó borrar el _SSL session_ cache (que mantiene las claves temporales por sesión, acelerando el inicio de sesión inicial de SSL), AFAICT. – Mormegil

3

La clase ServicePoint ha llamado un método interno que ReleaseAllConnectionGroups establece KeepAlive = false en todas las conexiones y luego las libera. This answer incluye toda la reflexión necesaria, pero establecer KeepAlive = false en cada HttpWebRequest mantendrá limpia la caché de la sesión SSL de .Net del lado del cliente.

SslEmptyCache pueden ser necesarios para borrar caching of SSL-SessionID y/o tickets hechos por SCHANNEL en el nivel de código nativo.

+1

Establecer KeepAlive = false funcionó muy bien. Intenté configurar HttpRequestCachePolicy primero, pero no tuvo ningún efecto. –

Cuestiones relacionadas