Tutorial de ASP.NET
Vista Previa de ASP.NET 2.0

Automatic Profile Save Behavior

La función Perfil determinará de forma automática si un Perfil está sucio. Si el Perfil parece estar sucio, el ProfileModule, que se ejecuta al final de cada petición de una página, llamará al método Save del Perfil, guardando así los datos mediante el(los) proveedore(s) configurados. Sin embargo, la función Perfil solo puede detectar de forma segura los cambios en los datos cuando los datos se escriben como un System.String o un tipo primitivo, como System.Int16, System.Int32, etc. Si un Perfil contiene tipos de datos más compejos, el comportamiento por defecto del Perfil es asumir que el Perfil está sucio y siempre intentará salvar los datos. Para optimizar el rendimiento, un desarrollados puede implementar lógica en sus páginas para determinar si el Perfil está realmente sucio. Si un desarrollador determina que el Perfil no ha cambiado, puede enganchar el evento ProfileAutoSaving escribiendo un manejador de eventos en global.asax. El argumento del evento incluye una propiedad llamada ContinueWithProfileAutoSave. Si el desarrollador establece dicha propiedad a false, el ProfileModule no intentará salvar el Perfil.

Ejecutamos el ejemplo, iniciando sesión de nuevo si es necesario. Esta página es la misma que la utilizada antes para mostrar las propiedades de los perfiles, pero se le ha añadido un segundo botón. Si editamos alguno de los datos del perfil y luego hacemos clic en el botón que cancela la función de salvado automático, cuando la página se recarga, los antiguos valores de la propiedad se mostrarán. El código ejemplo muestra como subscribir el evento
ProfileAutoSaving en el fichero global.asax y cancelar el guardado si una propiedad se ha fijado en el grupo HttpContext.Items. El manejador del evento clic del botón de la página establece este ítem para indicar que el comportamiento de guardado automático debe cancelarse.

Observad que si el desarrollador no quiere que el
ProfileModule intente guardar, el comportamiento de guardado automático se puede cancelar estableciendo el atributo de elemento automaticSaveEnabled dentro de <profile> a false.

C# Controlando el Guardado Automático del Perfil