sábado, 4 de octubre de 2008

Cómo hacer un request.serverVariables dentro de una clase.

En mis últimos coletazos antes de dos meses de curso para la certificación en Windows2003, si vuelvo a sistemas, estoy haciendo un panel de control de una página web en Visual Studio 2008 y me he encontrado con una vieja dificultad que ahora, después de dos años de estudios constantes en desarrollo, me parece tan simple que me es difícil creer las horas que me volvió loco este “problemilla”.

Básicamente lo que quiero es introducir en un módulo una variable que tome su valor de un httprequest de la variable de sistema que me indica la dirección física de mi carpeta de la web en el servidor. Esto se usa, sobre todo, para los directorios en donde cargas y recuperas ficheros (en este caso fotos).

Si lo pones en el fichero aspx.vb directamente, dentro de un método, todo funciona bien. Pero para ponerlo en una clase que no tenga conexión directa con el mundo real , la cosa casca.

La solución que me funciona es:

• Importas la clase System.Web.HttpContext. Así le abres una puerta a las comunicaciones http que realices desde la parte “exterior” de la aplicación.
• Para decirle que utilice la conexión actual, osea la que está abierta en ese momento, le especificas que es Current y entonces, si que puedes recuperar la variable de servidor a través de la comunicación http.

Imports System.Web.HttpContext
Dim ruta as string = Current.Request.ServerVariables("APPL_PHYSICAL_PATH")

Y yá ta.

No hay comentarios: