Foros del Web » Programación para mayores de 30 ;) » .NET »

Variable Global

Estas en el tema de Variable Global en el foro de .NET en Foros del Web. Deseo declarar esta variable de forma global para que me la tome todas las paginas que tengo en mi proyecto web. pues he tenido que ...
  #1 (permalink)  
Antiguo 17/03/2005, 08:55
 
Fecha de Ingreso: octubre-2004
Mensajes: 71
Antigüedad: 19 años, 6 meses
Puntos: 0
Pregunta Variable Global

Deseo declarar esta variable de forma global para que me la tome todas las paginas que tengo en mi proyecto web. pues he tenido que realizar cambios y me toca hacerlo pagina por pagina y tengo mas de 10.

Dim cnn As New OdbcConnection(cadenacnn)

Gracias


Jhernanp.
  #2 (permalink)  
Antiguo 17/03/2005, 09:04
 
Fecha de Ingreso: mayo-2004
Ubicación: Managua, Nicaragua
Mensajes: 281
Antigüedad: 20 años
Puntos: 0
Trabajala con Sessiones, Session("cnn") = valor de conexión
__________________
Julio Hernández
  #3 (permalink)  
Antiguo 17/03/2005, 09:26
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
Configuración Centralizada Para .NET

Es mejor trabajarlo con variables de aplicación. Modifica el archivo global.asax, ejemplo:

<%@ Application %>
<script language="VB" runat="server">
' You can also use Application_Start for the method name in the
' following declaration.
Sub Application_OnStart()
Application["Conneccion"] = "string de coneccion";
End Sub

</script>

Pero también podrías poner el string de conección en el archivo web.config

<%@ Application %>
<%@ Import Namespace="System.Configuration" %>
<script language="VB" runat="server">
' You can also use Application_Start for the method name in the
' following declaration.
Sub Application_OnStart()
Application["Conneccion"] = ConfigurationSettings.AppSettings["Coneccion"]
End Sub
</script>

y el archivo web.config tendria:

<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="Coneccion" value="string de coneccion" />
</appSettings>
</configuration>

En las páginas entonces utilizas:

OdbcConnection oc = new OdbConecction((string)Application["Coneccion"]);

Cabe recordar que un objeto de conección compartido te puede dar problemas de concurrencia (varios usuarios a la vez accesando), por lo que en cada pagina creas tu objeto de base de datos pero tenes un solo string de conección.

Otra manera de hacer esto es creando un tu componente que te maneje la configuración, utilizando el compilador de csharp (C#) o vbnet (VB.Net) para generar un DLL que colocas en la carpeta \bin de tu aplicación.

El archivo global.asax solo puede existir uno por aplicación, y debe estar en el directorio raíz. El archivo web.config puede haber uno por carpeta, y los valores de las carpetas superiores se heredan.

Espero esto te sirva =)
__________________
José Luis Chávez del Cid
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #4 (permalink)  
Antiguo 17/03/2005, 09:46
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
De hecho la manera mas óptima, limpia y buena es hacerlo así:

Cita:
<configuration>
<appSettings>
<add key="connectionString" value="string de coneccion" />
</appSettings>

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 01/08/2010, 15:26
 
Fecha de Ingreso: enero-2010
Ubicación: Maturin
Mensajes: 4
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Variable Global

Buen dia

Disculpas por escribir en este tema que tiene tanto tiempo sin mover.

Soy muy nuevo en esto de aspx y solo se programar en VB, estoy poniendome al dia con VB.Net

Si en mi programa tengo en un modulo

**Modulo
Public Valorx as string = ""

**Form. Desde un formulario x la llamo
text1.text = Valorx

y eso me da el valor. si otro usuario abre la aplicacion la variable no le da mi valor a otro.

¿no ocurre igual en VB.Net usando el Global.asax?

Edito:
Dando golpes logre probar y logre probar el codigo y comprobe que desde donde lo llame tiene el mismo valor

Cree este

Sub Usuario(ByVal sender As Object, ByVal e As EventArgs)
Application("Usuario") = ""
End Sub

De una pagina cambie el valor y llame

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Application("usuario") = "wwwwwwww"
var1es.Text = Application("usuario").ToString
End Sub

Desde otra solo lo lei

labelMessage.Text = Application("usuario")

Y me coloca el valor que le di. el problema es que de otras maquinas tambien lo lee.

¿Como lo puedo hacer para que los valores dados solo se lean de cada maquina.?

Me interesan varias variables, pero, que cada maquina o user tenga el valor que ellos le den.

Gracias por la ayuda que me brinden

Última edición por wjvelasquez; 01/08/2010 a las 15:46
  #6 (permalink)  
Antiguo 06/08/2010, 09:24
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
Respuesta: Variable Global

Todo dependera de donde queres tener tus variables, y si estas comentando en un thread sobre variables globales, pero lo que estas buscando es evitar las variables globales, y más queres variables por usuario... lo importante es determinar el tipo de persistencia que queres para el valor.

Por que contas con varios enfoques:
  • valores globales (este thread)*
  • valores por sesión
  • valores persistentes entre sesiones
  • valores por pagina
  • valores persistentes sin importar la ubicación
  • perfil del usuario
*para todos los usuarios

Entonces todo dependera de que queres hacer...

Me imagino que lo que necesitaras es que cuando un usuario ingrese pueda trabajar con valores y que cuando cierre su sesión en la maquina en la que esta trabajando estos puedan ser descartados.

estos valores los podes accesar desde el objeto Session

Código:
Page.Session["nombreVariable"]
donde podes leer y grabar la variable de sesión de la siguiente manera:

Código:
Page.Session("nombreVariable") = "valor";
variableLocal = Page.Session("nombreVariable")
En Visual Basic no tendrías que hacer un cast, pero en c# si para regresarlo al tipo de valor que estes manejando, aunque por algun motivo podrías necesitar hacer algún CType cuando lees la variable de sesión.

una forma practica de tener acceso en c# sería una propiedad de apoyo

Código:
public string ValorTexto
{
    get { return (string)this.Page.Session["valorTexto"]; }
    set { this.Page.Session["valorTexto"] = value; }
}
aunque habria que colocarlo en cada página... o podrías usar una clase estatica

Código:
public static class Sesion
{
    public static string NumeroSesion
    {
        get { return HttpContext.Current.Session["ns"]; }
        set { HttpContext.Current.Session["ns"] = value; }
    }
}
y podrías accesarlo en cualquier otra página como

Código:
Sesion.NumeroSesion = "1275";
string numero = Sesion.NumeroSesion
vale recordar que cada valor de estos guardado en la sesión aumentara el consumo de memoria del servidor, por lo que es bueno en casos de muchas variables y muchos usuarios considerar la persistencia de la sesión en un SQL Server por ejemplo, o cuando se utilizan varios servidores en una "granja" para soportar altas cargas de usuarios, para poder compartirlo entre todos los servidores debes usar este método.
__________________
José Luis Chávez del Cid
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:17.