Sus dos opciones para almacenar temporalmente datos de formulario son, en primer lugar, almacenar la información de cada formulario en variables de estado de sesión y, en segundo lugar, pasar la información del formulario junto con los parámetros de URL. El uso de Cookies como una tercera opción potencial simplemente no es viable por el simple motivo de que muchos de sus visitantes probablemente tengan las cookies desactivadas (sin embargo, esto no afecta las cookies de sesión).Además, estoy asumiendo por la naturaleza de su pregunta que no desea almacenar esta información en una tabla de base de datos hasta que esté completamente comprometida.
El uso de variable (s) de sesión es la solución clásica a este problema, pero adolece de algunos inconvenientes. Entre ellos se encuentran (1) grandes cantidades de datos que pueden agotar la RAM del servidor si está utilizando la administración de sesiones inproc, (2) compartir variables de sesión en varios servidores en una granja de servidores requiere consideraciones adicionales, y (3) una aplicación diseñada profesionalmente protegerse contra la caducidad de la sesión (no solo lanzar una variable de sesión y usarla - si la sesión ha expirado, el lanzamiento arrojará un error). Sin embargo, para la gran mayoría de las aplicaciones, las variables de sesión son, sin duda, el camino a seguir.
La alternativa es pasar la información de cada formulario a lo largo de la URL. El principal problema con este enfoque es que tendrá que ser extremadamente cuidadoso con la información "de paso". Por ejemplo, si está recopilando información en cuatro páginas, deberá recopilar información en la primera, pasarla en la URL a la segunda página donde debe almacenarla en viewstate de esa página. Luego, cuando llame a la tercera página, recopilará los datos del formulario de la segunda página más las variables del estado de visualización y codificará ambos en la URL, etc. Si tiene cinco o más páginas o si el visitante saltará por el sitio, usted Tendrás un verdadero lío en tus manos. Tenga en cuenta también que toda la información deberá A) ser serializada a una cadena segura para URL y B) codificada de tal manera que evite hacks simples basados en URL (por ejemplo, si pone el precio en texto claro y lo pasa) a lo largo, alguien podría cambiar el precio). Tenga en cuenta que puede reducir algunos de estos problemas creando un tipo de "administrador de sesión" y haga que administre las cadenas de URL para usted, pero igual tendría que ser extremadamente sensible a la posibilidad de que un enlace determinado pueda arruinar toda la sesión si no se maneja adecuadamente
Al final, utilizo las variables de URL solo para pasar datos muy limitados de una página a la siguiente (por ejemplo, la ID de un elemento como codificada en un enlace a ese elemento).
Supongamos, entonces, que efectivamente gestionará los datos de un usuario utilizando la capacidad de sesiones incorporada. ¿Por qué alguien te diría que "la sesión es malvada"? Bueno, además de las consideraciones sobre la carga de la memoria, la granja de servidores y la expiración presentadas anteriormente, la crítica principal de las variables de Sesión es que son, de hecho, variables sin tipo.
Afortunadamente, el uso prudente de las variables de sesión puede evitar problemas de memoria (artículos grandes se debe mantener en la base de datos de todos modos) y si está ejecutando un sitio lo suficientemente grande como para necesitar un conjunto de servidores, hay un montón de mecanismos disponibles para compartir el estado incorporado en ASP.NET (sugerencia: no usará almacenamiento inproc).
Para evitar esencialmente el resto de los inconvenientes de la sesión, le recomiendo que implemente un objeto para contener sus datos de sesión, así como algunas capacidades simples de administración de objetos de sesión. A continuación, créelas en un descendiente de la clase Page y use esta clase de Página descendiente para todas sus páginas. A continuación, es una cuestión simple acceder a sus datos de sesión a través de la clase de página como un conjunto de valores fuertemente tipados. Tenga en cuenta que los campos de su Objeto le darán una forma de acceder a cada una de sus "variables de sesión" de una manera fuertemente tipada (por ejemplo, un campo por variable).
¡Avíseme si esta es una tarea sencilla para usted o si desea un código de muestra!
una publicación relacionada aquí: http://stackoverflow.com/questions/769338/use-of-session-in-high-traffic-websites – MedicineMan