Pregunta

¿Cómo puedo persistir un conjunto de datos específicas de usuario para una aplicación ASP.Net.

He intentado Variable de sesión -. No es bueno cuando el proceso de trabajo recicla

Necesito algo que se puede acceder de forma global por ninguna clase de mi solicitud.

Los consejos más que bienvenidos.

He intentado utilizar asp.net sesión de servidor de estado, pero tengo algunos archivos DLL rompiendo porque son Unserializable.

¿Hay alguna otra manera de tener una variable persistente en la aplicación?

¿Fue útil?

Solución

estado de sesión ASP.NET se puede configurar para persistir a una base de datos.

Aquí hay un tutorial sobre cómo poner esto en marcha.

Otros consejos

almacenar datos en un base de datos (como SQL Server).

Debe utilizar Sesión. Puede acceder estado de sesión a nivel mundial en una clase como esta ...

HttpContext.Current.Session

Para evitar la pérdida de sesiones por el reciclaje de procesos de trabajo, utilice modo StateServer .

Puede cambiar el estado de servidor de sesiones para no estar en el proceso que hará que sea mucho más estable y también separarlo del proceso de trabajo (Tendrá que ser capaz de iniciar el servicio de estado Asp.NET en el servidor si no está ya en ejecución)

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/>

Además, si usted necesita para compartirlo a través de aplicaciones en el mismo dominio que debe ser capaz de darles el mismo máquina clave

No hay nada que realmente se puede hacer con el reciclaje de procesos. Si se utiliza la caché de forma inteligente para retener la información en un sentido más global, pero todavía tiene la misma limitación proceso de trabajo.

Trato y el diseño de mi aplicación en una configuración de n niveles con objetos de entidad de negocios. Los métodos de fábrica para mis objetos utilizan la memoria caché como una especie de patrón instantation perezoso. Si está en el cahce, tire de ella. Si no, ponerlo en la memoria caché para la próxima vez.

es decir

MyAppsNameSpace.MyBusinessLayerNameSpace.MyObject.GetObject(objectID)

Ahora cuando este regresa a mi objeto, que puede ser desde la caché o no, si el objeto está en el uso de alta entonces será probablemente ser almacenado en caché.

Esto puede ser utilizado a lo largo de toda su aplicación y porque el mecanismo de caché se mantiene centralmente que realmente no tienen que preocuparse por ello.

Se puede utilizar el proveedor de perfil con una base de datos SQL como almacén de respaldo.

MSDN artículo

Si pierde datos cuando el proceso de trabajo recicla entonces usted debe dejar de usar el modo de persistencia InProc de la reunión. Utilice StateServer o SQL Server. En última instancia se podría construir su propio módulo de sesión de persistencia si ninguno satisface usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top