El problema es que se ignoraba que al hacer esto, estas variables eran
compartidas entre las diferentes sessiones que se iniciaran en el sistema,
volviendose loko cuando un nuevo usuario se conectaba y las modificaba.
La clase Global.cs tiene el sigte aspecto:
public class Global{
public static string cadena = "";
}
Lo que se busca o pretende es, contar con variables globales por usuario,
que no se compartan entre ellos.
Estudiamos la opcion del manejo de session, pero el cambio seria brutal, Que
otra opcion se puede implementar??
Gracias
=(
Se me ocurre esta posible solución:
- Quitar los "static" de las variables de la clase Global.
- Renombrar la clase Global a otra cosa (por ejemplo CGlobal).
- En el Session_Start del Global.asax, poner Session["Global"]=new
CGlobal();
- Compilar. El compilador dará un error en todos los sitios donde se
llame a Global.AlgunaVariable, dado que ya no existe Global. Ir haciendo
click en cada error y cambiar Global por ((CGlobal)Session["Global"]). Para
simplificar, se puede escribir un método o propiedad que devuelva este
valor.
Por ejemplo para la variable cadena que has puesto de ejemplo sería así:
public class Global
{
public static string cadena
{
get
{
return (string) HttpContext.Current.Session["cadena"];
}
set
{
HttpContext.Current.Session["cadena"] = value;
}
}
}
De esta manera no hay que hacer ningún cambio en el resto de código de la
aplicación, todo seguiría igual.
Saludos:
Jesús López
www.solidq.com
"csharp1" <y...@msn.com> escribió en el mensaje
news:e3PIlTAW...@TK2MSFTNGP06.phx.gbl...
"Jesús López" <sqranger.mv...@mvps.org.nospam> escribió en el
mensaje news:OUsgqCEW...@TK2MSFTNGP02.phx.gbl...