2008-10-08 33 views
32

Realizo algunas pruebas de blackbox de un sitio web de ASP.Net y necesito probar diferentes escenarios de tiempo de espera de la sesión.ASP.NET Session Timeout Testing

No estoy seguro de que hayan terminado los tiempos de espera de la sesión totalmente encapsulados. Luego de dejar una página abierta durante 20 minutos ¿hay alguna manera más fácil de forzar el tiempo de espera de una sesión?

+1

Cuando dices pruebas de caja negra, supongo que eso significa que no tienes acceso al código, a los archivos de configuración ni a IIS. :) –

+0

No responde la pregunta del OP, pero está relacionado: si solo necesita probar el comportamiento cuando el tiempo de espera es correcto o no, simplemente reinicie el servidor después de iniciar sesión.La sesión anterior será inválida –

Respuesta

67

Disminuir el tiempo de espera

La manera más fácil y no intrusiva para probar esto es probablemente sólo disminuir el tiempo de espera a una bastante pequeña número, como 3 o 5 minutos. De esta forma, puede pausar durante unos minutos para simular una pausa más larga sin preocuparse por los reinicios de la aplicación o el código de reinicio especial que tenga algún efecto en los resultados de la prueba.

Puede modificar el tiempo de espera del estado de la sesión en algunas ubicaciones, globalmente (en el archivo web.config ubicado en la carpeta config para la versión correspondiente de .NET framework), o solo para su aplicación.

Para modificar el tiempo de espera sólo para su aplicación, se puede añadir lo siguiente a web.config de su aplicación:

<system.web> 
    <sessionState timeout="60" /> 
    ... 

Como alternativa, también puede modificar esta misma configuración para su aplicación a través de un diálogo de configuración de IIS (Sin embargo, creo que todavía necesita tener un web.config definido para su aplicación, de lo contrario la configuración de edición se desactivará).

Para acceder a esto, haga clic derecho en su aplicación web en IIS, y navegue a Propiedades | Pestaña ASP.NET | Editar configuración | Pestaña Administración de estado | Tiempo de espera de la sesión (minutos).

Tenga en cuenta que también puede manipular esta configuración a través del código; si esto ya se está haciendo, entonces la configuración en el archivo web.config será ignorada efectivamente y necesitará usar otra técnica.

llamada Session.Abandon()

Una técnica un poco más intrusivo que establecer un tiempo de espera de baja sería llamar Session.Abandon(). Sin embargo, asegúrese de llamar esto desde una página separada de su aplicación, ya que la sesión no finaliza hasta que se procesen todos los comandos de script en la página actual.

Según tengo entendido, esta sería una forma bastante limpia de probar los tiempos de espera de sesión sin esperarlos.

forzar un reinicio de la aplicación

En una configuración por defecto del estado de la sesión, se puede simular un tiempo de espera de la sesión insuflando las sesiones en su totalidad por causar la aplicación para reiniciar. Esto se puede hacer de varias maneras, algunas de las cuales se enumeran a continuación:

  • reciclar el grupo de aplicaciones a través
    • la MMC de IIS
    • la línea de comandos (iisapp/a AppPoolId/r)
    • modificar web.config, Global.asax, o una DLL en el directorio bin
  • reiniciar IIS a través
    • la MMC de IIS
    • services.msc y reiniciar el servicio de administración de IIS
    • la línea de comandos (iisreset)

Cuando menciono "configuración por defecto", me refiero una aplicación web que está configurada para usar el modo de estado de sesión "InProc". Hay otros modos que realmente pueden mantener el estado de la sesión incluso si se reinicia la aplicación web (StateServer, SQLServer, Custom).

manipular el mecanismo de seguimiento del estado

Asumiendo que su aplicación web no está configurado con un modo de "cookie-less" (por defecto, se utilizarán las cookies), usted podría quitar la cookie que contiene la sesión ID del navegador del cliente.

Sin embargo, tengo entendido que esto realmente no simula un tiempo de espera, ya que el servidor aún tendrá conocimiento de la sesión, simplemente no verá a nadie usándola. La solicitud sin una ID de sesión simplemente se tratará como una solicitud no vista que necesita una nueva sesión, que puede o no ser lo que desea probar.

1

Recicle el grupo de aplicaciones en el servidor.

9

añadir una página al sitio y llamar Session.Abandon()

2

Si va a almacenar su información de la sesión en una cookie, podría intentar borrar las cookies.

+0

Esto probablemente funcionaría porque el ID de sesión se almacena en las cookies –

4

Reduzca el tiempo de espera.

+0

Esto no funcionará si especifican el tiempo de espera en todo el código; de lo contrario, establecer el tiempo de espera en web.config funcionaría –

+0

El código probablemente debería tomar el valor de algún tipo de archivo de configuración. – tpower

4

Bounce the AppPool y la sesión se perderá.

si no tiene acceso directo a IIS, puede abrir y guardar Web.Config para hacer lo mismo (No use el bloc de notas, daña la codificación).

+5

¿Tiene más información sobre el bloc de notas que atornilla la codificación? No he tenido problemas para usar el bloc de notas (todavía), también este artículo de soporte de MS describe el uso del bloc de notas para editar web.config, "Puede crear un archivo Web.config usando un editor de texto como el Bloc de notas": http://support.microsoft.com/kb/815179 –

2

Puede cambiar el tiempo de espera en su webconfig

<authentication mode="Forms"> 
     <forms timeout="10" protection="All" slidingExpiration="true" loginUrl="~/login.aspx" cookieless="UseCookies"/> 
</authentication> 
0

Usted tiene dos opciones: -

1- disminuir el tiempo de espera de la sesión en web.config. 2- Reiniciar IIS o grupo de aplicaciones.

5

La manera más fácil sería abrir la página en dos pestañas diferentes y cerrar sesión en otra pestaña caducará automáticamente la sesión en la primera pestaña. La mayoría de los navegadores comparten sesión en la pestaña. Así que me parece muy fácil sin modificar nada en web.config. De esta forma podría probar incluso si una característica particular no está manejando la redirección para iniciar sesión cuando la sesión caduque.

0

Normalmente uso el servidor de estado de sesión ASP .NET. Además de otros beneficios durante el desarrollo, simplemente puedo reiniciar el servicio de estado ASP .NET para abandonar la sesión. Si está utilizando el servidor de estado, simplemente ejecute services.msc y reinicie el "Servicio de estado ASP .NET".