Colección de citas famosas - Slogan de motivación - ¿Por qué se pierde la sesión al cambiar de página en ASP.NET?

¿Por qué se pierde la sesión al cambiar de página en ASP.NET?

P: ¿Por qué ocasionalmente se pierden sesiones en algunas máquinas?

Respuesta: Puede estar relacionado con el entorno de la máquina, como un firewall o un software antivirus. Intente apagar el firewall.

P: ¿Por qué no se activa el método Session_End al llamar a Session? ¿aversión?

Respuesta: En primer lugar, el método Session_End solo admite sesiones de tipo InProc. En segundo lugar, para que se active el método Session_End, debe haber una sesión (es decir, la sesión ya está en uso en el sistema) y se debe completar al menos una solicitud (en la que se llamará al método).

P: ¿Por qué a menudo pierdo sesiones cuando uso el modo InProc?

Respuesta: Este problema generalmente se debe a que la aplicación se recicla, porque cuando se usan sesiones en proceso, la sesión se guarda en el proceso aspnet_wp, y cuando el proceso se recicla, la sesión desaparecerá naturalmente. Puede obtener información para determinar si el proceso se recicló consultando el Visor de eventos de su sistema.

Consulte:

En aplicaciones ASP.NET, las variables de sesión se pierden intermitentemente

/default.aspx. scid = kben-us; Q316148

También hay un error en 1.0 que hace que los procesos de trabajo se reciclen y se reinicien. Este error se ha solucionado en 1.1 y sp2.

Para obtener más información sobre este error, consulte:

El proceso de trabajo de Aspnet (Aspnet_wp.exe) se recicló inesperadamente.

/default.aspx? scid = kben-us; Q321792

P: Cuando una sesión se agota o se abandona, ¿por qué la nueva sesión tiene el mismo ID que la sesión original?

Respuesta: Dado que el ID de sesión se guarda en la instancia del navegador del cliente, cuando la sesión se restablece en el servidor después de que se agote el tiempo de espera, se utilizará el ID de sesión enviado por el navegador, por lo que el ID de la sesión se guarda cuando la sesión expira y se restablece. No se cambiará después de su creación.

P: ¿Por qué el ID de sesión es diferente para cada solicitud?

Respuesta: El problema puede deberse a que no se guarda ninguna información en la sesión, es decir, la sesión no se utiliza en ninguna parte del programa. Después de guardar información en una sesión, el ID de sesión siempre estará asociado con el navegador y el ID de sesión no cambiará en este momento.

P: ¿A ASP y ASP.NET les gustará este curso?

Respuesta: Sí. Pero este es un proceso complejo. Microsoft ha proporcionado una solución oficial. Consulte:/library/default.asp? URL =/library/en-us/dnaspp/html/converttoaspnet .ASP

P: ¿Qué tipos de objetos se pueden guardar en la sesión?

Respuesta: Depende del modo de sesión utilizado. Cuando utiliza una sesión en proceso, puede guardar fácilmente cualquier objeto. Si utiliza el modo que no es InProc, solo puede guardar objetos que se puedan serializar y deserializar. Si los objetos guardados en este momento no admiten la serialización, no se pueden guardar en una sesión en este modo (no InProc).

P: ¿Por qué no puedo usar la respuesta? Redirecciones y servidores. ¿Método de transferencia para saltar a la página en Session_End?

Respuesta: Session_End es un controlador de eventos que se activa dentro del servidor. Se basa en un temporizador interno del servidor, y cuando se activa el evento, no hay ningún objeto HttpRequest asociado en el servidor, por lo que se realiza la respuesta. Redirecciones y servidores. Los métodos de transferencia no están disponibles en este momento.

P: ¿Puedes obtener el objeto HttpContext en Session_End?

Respuesta: No, porque el evento no está asociado con ninguna solicitud y no tiene contexto basado en la solicitud.

P: ¿Cómo utilizar sesiones en servicios web?

Respuesta: Para utilizar sesiones en servicios web, es necesario realizar un trabajo adicional en la persona que llama al servicio web, y las cookies utilizadas al llamar al servicio web deben guardarse y almacenarse. Consulte httpwebclientprotocol para obtener más detalles. MSDN documenta las propiedades del contenedor de cookies. Sin embargo, si utiliza un servidor proxy para acceder al servicio web, ninguno de los dos podrá disfrutar de la sesión debido a limitaciones del marco.

P: ¿Por qué no puedo usar sesiones cuando personalizo mi propio HttpHandler?

Respuesta: Al implementar su propio HttpHandler, si desea utilizar Session, debe implementar una de las dos interfaces de etiquetas siguientes: IRequiresSessionState e IReadOnlySessionState. No hay forma de implementar estas interfaces, pero marcar la interfaz es lo mismo que usar la interfaz INamingContainer.

P: Cuando uso Webfarm, ¿por qué se pierde la sesión cuando redirijo a otro servidor web?

Respuesta: Para obtener más información, consulte:

PRB: si utiliza el modo de sesión SqlServer o StateServer, el estado de la sesión se perderá en la granja web

/default.aspx? scid=kben-us;325056

P: ¿Por qué mi sesión no es válida en el método application_onacquirerequeststate?

Respuesta: La sesión sólo es válida detrás de la aplicación http. Llame al evento de estado de solicitud de adquisición.

Para obtener más información, consulte:

/library/default.aspURL =/library/en-us/CPguide/html/cpconhandlingpublicevents.ASP

Pregunta: Si, ¿cómo dirijo desde una página HTTP a HTTPS usando cookies?

Respuesta: Intente lo siguiente:

cadena URL original = "/FX test 3/sub/foo 2. aspx";

cadena URL modificada = "/default.aspx?scid=kben-us;837376

P: ¿Cómo eliminar variables de sesión?

Respuesta: Para eliminar variables de sesión, puede utilizar HttpSessionState.Remove( )

P: ¿Hay alguna forma de saber cuánta memoria ocupa la sesión de la aplicación mientras se ejecuta?

a: No, este valor no se puede verificar en este momento, al menos yo. No he visto esta información, pero se puede estimar aproximadamente un valor a través del monitor de rendimiento y el código del programa.

P: Cuando hay conjuntos de marcos en la página, descubrí que el ID de sesión de la página que se muestra en cada marco. en la primera solicitud es diferente. ¿Por qué?

Respuesta: El motivo es que su conjunto de marcos se coloca en la página html en lugar de en la página ASPX. frameset es una página aspx. Cuando solicita una página, primero enviará la solicitud al servidor web, en cuyo momento habrá obtenido el SessionID, y luego el navegador solicitará otras páginas en el marco por separado, de modo que el SessionID de todos páginas es el mismo, es decir, el ID de sesión de la página del conjunto de marcos.

Sin embargo, si utiliza una página HTML como página del conjunto de marcos, la primera solicitud será para la página HTML cuando la página sea devuelta desde el servidor. y luego navegó El servidor solicitará las páginas en el marco, por lo que estas páginas generarán su propio ID de sesión, por lo que en este caso ocurrirá este problema. Cuando actualice la página, el ID de sesión seguirá siendo el mismo, es el ID de sesión de. la página solicitada anteriormente.

P: ¿Puedo guardar sesiones de diferentes aplicaciones en diferentes bases de datos en el mismo servidor SQL Server?

Respuesta: Sí, consulte:

Solución: el uso de una base de datos SQL para todas las aplicaciones con estado de sesión de SQL Server puede causar cuellos de botella

/default .aspx ? scid = kben-us;836680

P: ¿Puedo obtener objetos HttpSessionState y HttpContext válidos en Session_End?

Respuesta: Puede obtener el objeto HttpSessionState en este método y acceder a él directamente mediante Session. Sin embargo, el objeto HttpContext no se puede obtener porque el evento no está asociado con ninguna solicitud, por lo que no hay ningún objeto de contexto.

P: ¿Por qué mi sesión no caduca cuando la uso en modo SQLServer?

Respuesta: En el modo SqlServer, la caducidad de la sesión se completa registrando el agente SQL. Verifique si su agente SQL se está ejecutando.

P: Después de configurar EnableSessionState en "ReadOnly", aún puedo modificar el valor de la sesión en modo InProc. ¿Por qué?

Respuesta: Incluso si EnableSessionState está marcado como Solo lectura, los usuarios aún pueden editar la sesión en modo InProc. La única diferencia es que la sesión no está bloqueada mientras dure la solicitud.

P: ¿Cómo evitar especificar una contraseña al conectarse a SQL?

Respuesta: Utilice un enlace confiable o utilice una cadena de enlace cifrada. Para obtener más información sobre esto, consulte:

¿Cómo cifrar credenciales y cadenas de conexión de estado de sesión utilizando las utilidades ASP.NET

/default.aspx? scid=kben-us;329290

P: ¿Cómo uso Conversaciones en mi propia clase?

Respuesta: Puede utilizar HttpContext. actual. La sesión es la siguiente:

HttpContext. current .Session["Session key"]="Session value";

Del mismo modo, puede utilizar el objeto Aplicación de esta manera.

P: ¿Por qué mi solicitud se bloquea después de cambiar al modo SQLServer?

Respuesta: Compruebe si todos los objetos almacenados en la sesión se pueden almacenar en modo SQL Server, es decir, estos objetos deben admitir la serialización.

P: ¿Qué sucede cuando una sesión se configura sin cookies?

Respuesta: Cuando sin cookies se establece en verdadero, existen principalmente las siguientes restricciones:

1. No se pueden utilizar enlaces absolutos en la página.

2. Al cambiar Http y HTTPS en la aplicación, hay algunos otros pasos que deben completarse.

Si envías un enlace a otra persona, la URL contendrá información de ID de sesión, por lo que las dos personas compartirán una sesión.

P: ¿Puedo guardar sesiones en la base de datos?

Respuesta: Por supuesto, para obtener más detalles, consulte:/default.aspx? scid = kben-us;311209