2012-07-10 22 views
6

Soy bastante nuevo para el Desarrollo Web y ASP.net pero me preguntaba la siguiente pregunta:Interferencia estática variable ASP.net?

Si declaro una variable estática en una página web y varios Los usuarios acceden a la misma página al mismo tiempo. ¿Es esta variable estática única para cada usuario o interferirá con usuarios diferentes?

Gracias

Respuesta

7

Sí, se interferirán entre los usuarios, y entre solicitudes simultáneas por un único usuario. Evite campos estáticos en ASP.NET (y en la mayoría de otros desarrollos) a menos que esté seguro de lo que está haciendo.

Considere usar el estado de sesión para lo que está haciendo aquí, o algo como parte de la solicitud en sí (datos de formulario, cookie, etc.).

2

¿Es esta variable única para cada usuario

va a interferir con los diferentes usuarios estática?

Sí.

Usted desea utilizar algún otro medio persistencia, como el estado de la sesión, caching, etc.

Algunas personas utilizan el atributo [ThreadStatic] en campos en ASP.NET para que sea único para cada usuario, pero que es peligroso y no debe hacerse. Evita esto a toda costa. Solo lo menciono en caso de que alguien más lo recomiende.

+0

Re a su edición; Algo en particular acerca de '[ThreadStatic]' es que ASP.NET puede procesar diferentes pasos de una solicitud ** en diferentes hilos *, lo que puede llevar a un comportamiento muy extraño con '[ThreadStatic]' –

+0

@MarcGravell sí, eso es por qué desaconsejo firmemente su uso. No hay garantía de que ASP.NET termine la solicitud con el mismo hilo en el que comenzó. Especialmente con C# 5/MVC4 en camino, evitaría aprovechar el nuevo async/await. – vcsjones

Cuestiones relacionadas