JASoft.org

Cómo detectar su nuestra página dispone de un ScriptManager o no

Cómo detectar su nuestra página dispone de un ScriptManager o no
Hay veces que necesitaremos usar programáticamente un ScriptManager dentro de una página, por ejemplo para añadir dinámicamente referencias a Scripts o a servicios Web o WCF. Para ello deberemos automatizar el control ScriptManager que toda página AJAX debe tener, pero ¿qué pasa si no existe ese control? Para asegurarnos de que el control está añadido a la página y que podemos utilizarlo podemos emplear el método estático GetCurrent de la clase ScriptManager para verificar su existencia, así: public static bool IsScriptManagerPresent(Page p) { ScriptManager Smgr = ScriptManager.GetCurrent(p); return (Smgr != null); } Con esta sencilla función podremos averiguar si hay un Scriptmanager presente o no. Es interesante notar que este método funciona y devuelve el valor correcto incluso cuando el ScriptManager no está presente en la página actual sino en la página plantilla (Master Page) que la contiene. No obstante es importante darse cuenta de que en ese caso devovlerá true i... [Más]

Cómo usar Fiddler con el servidor de desarrollo de ASP.NET

Cómo usar Fiddler con el servidor de desarrollo de ASP.NET
En mi anterior post comentaba los peligros de usar alegremente los controles UpdatePanel de AJAX y mostraba con la excelente herramienta Fiddler cómo eran las peticiones que se enviaban y recibían. Alguien me ha preguntado cómo hago para poder utilizar Fiddler con el servidor Web de desarrollo que viene con Visual Studio (conocido comunmente como Cassini), ya que por mucho que actives Fiddler por defecto no captura las peticiones hechas a dicho servidor. El servidor de desarrollo sólo admite peticiones locales y accedemos a ése a través de una URL del tipo: http://locahost:3572/miapp Eligiendo un puerto aleatorio de cada vez. Cuando lanzas Fiddler éste se coloca como proxy de Internet Explorer interceptando todas las llamadas que hace éste a las páginas Web. Lo que ocurre es que IE cuando detecta que una llamada se va a hacer en local (contra localhost vamos) automáticamente hace caso omiso de los posibles proxy que hubiera y lanza la petición directamente, de ahí que Fiddler no... [Más]

Los peligros del Update Panel

Los peligros del Update Panel
Las tecnologías de Microsoft han adolecido tradicionalmente de un problema que es a la vez, paradójicamente, su mayor ventaja: la sencillez aparente de uso. Pienso que  la clave del éxito de Windows, Office y otros muchos productos de la casa de Redmond ha sido y es su sencillez de uso. Pero esta misma sencillez de uso se convierte también un arma de doble filo: hace que la gente se quede en la superficie de las cosas, sin comprender bien las consecuencias de lo que hacen. Ha pasado toda la vida con las versiones de servidor de Windows, y ha pasado y pasa con las herramientas de desarrollo. Al ser fáciles de configurar y utilizar la gente enseguida "controla" la tecnología correspondiente, lo cual es un error grave. En este caso me estoy refiriendo en concreto a la tecnología ASP.NET AJAX que tanto facilita el desarrollo de aplicaciones de interfaz avanzada para la Web. Desde mi punto de vista el Update Panel es una obra de arte que debería llevar un premio al diseño de... [Más]

GridView de ASP.NET a fondo: no te lo pierdas

GridView de ASP.NET a fondo: no te lo pierdas
El próximo día 1 de Julio tengo el gusto de participar como ponente en este interesante evento on-line de SecondNUG, el grupo de usuarios de .NET en Español que cada vez está teniendo más tirón: En este evento Luis Miguel Blanco se encargará de desvelar los secretos y dudas más comunes de las rejillas en programas de escritorio (Windows Forms), mientras que yo me encargaré de hacer lo propio con el control GridView de ASP.NET para desarrollo Web. Será una hora para cada control con contenidos eminentemente prácticos (mucha demo) y trataremos de resolver las dudas más comunes que se suscitan en los foros de MSDN. Apúntate pulsando sobre la imagen de más arriba.

Cómo detectar si la sesión ha caducado en ASP.NET (Método II)

Cómo detectar si la sesión ha caducado en ASP.NET (Método II)
En mi anterior post comentaba brevemente el funcionamiento más común de los sistemas de sesiones de los servidores de aplicaciones Web y en particular el de ASP y ASP.NET. Éste lleva acarreados una serie de problemas cuando ls sesiones terminan por lo que comentaba una forma sencilla de detectar que una sesión había caducado. En dicho post comenté que iba a explicar una forma más "profesional" y autocontenida de comprobar si una sesión está activa o no en ASP.NET, y a eso voy... El mecanismo para comprobar si la sesión actual está caducada o no pasa por el uso de una propiedad no muy conocida de la clase HttpContext: IsNewSession. Esta propiedad devuelve 'verdadero' únicamente cuando se acaba de crear una sesión para el usuario justo en la petición actual. Una sesión se crea cuando se crea una variable de sesión por primera vez. Al hacerlo se envía al cliente una cabecera con el identificador de sesión que es el que posteriormente el navegador envía de nuevo al servidor en cada petici... [Más]

Cómo detectar si la sesión ha caducado en ASP.NET (Método I)

Cómo detectar si la sesión ha caducado en ASP.NET (Método I)
El protocolo HTTP es un protocolo sin estado. Esto quiere decir que no hay forma incluída en el protocolo para discernir una petición de otra. Por lo tanto cuando llegan dos peticiones al servidor no hay forma de saber si pertenecen al mismo usuario (ni siquiera la IP como alguna gente me dice a veces, ya que muchas personas pueden salir a Internet desde la misma dirección IP (mismo router y conexión). Además los identificacdores estáticos como ese no son fiables nunca). Dicho esto, lo que está claro es que en la práctica sí que existe forma de distinguir que dos peticiones vienen del mismo usuario. Es el concepto que sostiene las sesiones de ASP.NET y otras tecnologías. ¿Cómo se consigue?. Bueno, existen muchas formas de hacerlo, pero la más habitual consiste en utilizar una cookie de sesión para almacenar un valor único que identifica de manera inequívoca a cada usuario. Estas cookies de sesión son realmente cabeceras HTTP que el navegador envía de vuelta al servidor en cada petició... [Más]

Cifrado de información en los archivos de configuración de ASP.NET

Cifrado de información en los archivos de configuración de ASP.NET
Una pregunta muy típica con la que me suelo encontrar es la de: "¿Cómo puedo hacer para proteger la información de mi cadena de conexión a la base de datos si ésta la pongo en mi web.config?". Bueno, lo primero que he de decir es que siempre conviene usar mejor la seguridad integrada de Windows (cadena de conexión con "Integrated Security=SSPI;") que las cuentas propias de SQL Sever, por lo que en ese caso no sería necesario encriptar nada. Por otro lado existe un manejador de peticiones de IIS que impide que el contenido de los archivos web.config sea accedido mediante HTTP, por lo que sólo debería preocuparnos que alguien viera nuestra configuración en caso de tener un agujero de seguridad en el servidor o bien en nuestro código (por cierto, aprende a evitarlos), en cuyo caso tendríamos un problema mucho mayor que el hecho de que sepan las credenciales de un usuario de SQL Server, que ya de po... [Más]

El problema de los valores por defecto en listas desplegables de ASP.NET

El problema de los valores por defecto en listas desplegables de ASP.NET
Se trata este de un truco sencillo, pero aún así interesante ya que mucha gente tarda en darse cuenta de cómo solucionarlo. El problema surge cuando usas un control DataSource del tipo que sea (ObjectDataSource, SqlDataSource, LinqDataSource, etc...) y lo enlazas con un DropDownList para mostrar una lista de valores para elegir, por ejemplo, la categoría de productos a mostrar en otro control GridView. El origen de datos te devuelve sólo los diferentes valores de categorías disponibles en la base de datos, pero lo habitual es que además de una categoría (o lo que sea) concreta, desees dar una opción o dos por defecto, por ejemplo "Ver todas" y "Ninguna". Pero claro el control de origen de datos no tiene esas categorías inexistentes contempladas, así que ¿cómo haces? Pues muy fácil, pero hay que saber un truquillo: la propiedad AppendDataBoundItems del control DropDownList. Si la estableces a True lo que consigues es que cualquier elemento que coloques en lalista en ti... [Más]

Bug en el control RangeValidator con los idiomas Búlgaro y Eslovaco

Bug en el control RangeValidator con los idiomas Búlgaro y Eslovaco
Bueno, esto es de estas cosas que crees que a ti no te van a pasar pero luego resulta que sí, que te pasan :-) Y es que un cliente nuestro ha encontrado la aguja en el pajar. Una aplicación que teníamos producía un error inexplicable en un par de clientes de este cliente, y no sabíamos de qué era. Viendo el registro de errores pudimos llegar a dar con el problema. Resulta que cuando el idioma del navegador del usuario es Búlgaro (bgt-BG) o Eslovaco (sk-SK) y tienes el cambio automático de cultura activado, el control RangeValidator puede romper si estás validando fechas. Sí, es que la aplicación que habíamos hecho está internacionalizada y nuestro cliente tiene clientes en todas partes de europa, así que... Al producirse el error la página incluso deja de cargar, ya que rompe durante la asignación de los valores máximo y mínimo si éstos se establecen mediante código (como es normal cuando se trata de fechas). El problema es que en estos países el formato de fechas es raro de narice... [Más]

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico