JASoft.org

Creación de manejadores de peticiones asíncronos: El contador de Meneame.net

Creación de manejadores de peticiones asíncronos: El contador de Meneame.net
Meneame.net es una Web recopiladora de enlaces en la que los usuarios publican enlaces que creen de interés, y el resto de los usuarios votan o critican en función de lo sus intereses. La teoría es que, de este modo, los enlaces más interesantes subirán hacia las primeras posiciones de su categoría en virtud de este proceso de "crowdsourcing". La práctica es que no siempre es así (prueba a posicionar un enlace técnico, por ejemplo). Pero no obstante la web es muy interesante para encontrar enlaces y noticias de interés general dentro de temáticas más o menos prosaicas. A cada voto que recibe una URL se le denomina "meneo". El caso es que, al menos oficialmente, no existe ningún botón de información sobre cuántos "meneos" tiene una determinada URL, al estilo de los que tiene Facebook o Twitter. Los únicos desarrollos que integran este botón para poder poner dicha información en tu blog o web pertenecen a sitios de valoración social, estilo ShareIt y compañía, por lo que si quieres tene... [Más]

Solución al mensaje "Error genérico de GDI+" en aplicaciones Web que generan gráficos

Solución al mensaje "Error genérico de GDI+" en aplicaciones Web que generan gráficos
Este fin de semana he estado trabajando en una pequeña aplicación que en breve colgaré con código fuente para todo el mundo y que me dio el error que os comento en el título del post. Aunque todo lo que utilicé era compatible con .NET 2.0, la desarrollé en mi equipo con Visual Studio 2010 y .NET 4.0, donde todo funcionaba a la perfección. Al subirla al servidor donde iba a estar albergada, de repente, me daba el error "Error genérico de GDI+" o -en inglés- "A generic error occurred in GDI+", sin más explicaciones, y con unas referencias muy raras a Remoting. Mi código original generaba una imagen que posteriormente se devolvía al navegador en formato PNG. El código que estaba utilizando era similar al siguiente: Bitmap img = new Bitmap(sRutaImagenPatron);Graphics g = Graphics.FromImage(img);Font f = new Font(fuente, tamanio, FontStyle.Bold);Brush b = colorLetra;g.DrawString(string.Format("{0:n0}", iDato), f, b, posX_Letra, posY_Letra); context.Response.ContentType = "image/png";img... [Más]

Archivos temporales de compilación de ASP.NET

Archivos temporales de compilación de ASP.NET
Esta pregunta ha surgido hoy en uno de mis cursos de desarrollo Web y me ha parecido interesante para comentarla aquí. Como es sabido ASP.NET Web Forms hace uso de una serie de archivos de código auto-generados para “mezclar” su código con las clases “code-beside” que contienen los eventos y el código que escribimos para los formularios Web, por medio del uso de clases parciales y herencia. Nota: Por ejemplo, en la página Default.aspx, su archivo “code-beside” sería Default.aspx.cs o Default.aspx.vb en función de si programamos en C# o VB Este código se genera dinámicamente al compilar el sitio Web y, en teoría, se almacena para hacer caché en la carpeta: C:\Windows\Microsoft.NET\Framework\vx.y.zzzz\Temporary ASP.NET Files siendo x.y.zzzz la versión de la plataforma que tengamos instalada, que en caso de .NET 4.0 es “v4.0.30319” y en las demás versiones anteriores (2.0, 3.0 y 3.5) es “v2.0.50727” (ya he dicho muchas veces que las versiones 2.0, 3.0 y 3.5 son lo mismo a efectos... [Más]

Evitar que se publiquen las descripciones de nuestros servicios Web

Evitar que se publiquen las descripciones de nuestros servicios Web
Si disponemos de un servicio Web en nuestro servidor que está destinado a ser utilizado por nuestras aplicaciones pero no queremos facilitar que otros programadores le puedan sacar partido: ¿para qué queremos dejar publicado su archivo de descripción WSDL? El WSDL (Web Services Description Language) describe cómo es un servicio Web: qué tipos usa, qué métodos expone, etc… y es lo que usan Visual Studio y otras herramientas para crear un proxy que nos permita usar un determinado servicio. Se puede visualizar para cualquier servicio de .NET añadiendo ?wsdl al final de su URL, por ejemplo: http://www.miservidor.com/Servicios/miServicio.asmx?wsdl Cuando añadimos una nueva referencia Web a nuestro proyecto, en el diálogo que aparece podemos inspeccionar el servicio gracias a su descripción WSDL: Sin ese WSDL no podríamos inspeccionarlo ni tampoco añadir la clase proxy correspondiente. Un proxy es una serie de clases .NET que actúan de intermediarias entre nuestro código y el servi... [Más]

Cómo suplantar usuarios de tu aplicación para soporte

Cómo suplantar usuarios de tu aplicación para soporte
Esta es una cuestión bastante habitual y es que es muy útil, siendo administrador de una aplicación, poder entrar como cualquier otro usuario para ver lo mismo que éste ve y poder hacer cosas en su nombre. Sobre todo a la hora de dar soporte técnico, poder atender mejor a los usuarios, ayudarles o detectar posibles problemas en sus cuentas. La idea es la de poder entrar haciéndonos pasar por otros usuarios, como si fuésemos ellos, pero sin conocer sus credenciales. El otro día un alumno de mi curso de Desarrollo Web con ASP.NET me preguntó  precisamente esto, por lo que me he decidido a grabar un vídeo práctico explicando como hacerlo. Como verás es muy fácil, pero interesante. Dejo el vídeo a continuación y te recomiendo que, antes, te leas este post que escribí hace tiempo sobre el funcionamiento de las cookies de autenticación. ¡Espero que te resulte &... [Más]

Cómo forzar la configuración correcta de ASP.NET en un servidor

Cómo forzar la configuración correcta de ASP.NET en un servidor
Existen una serie de ajustes en aplicaciones Web que deberíamos cuidar especialmente cuando las despleguemos en un servidor en producción. Se trata de características que, de estar mal establecidas en un servidor abierto a cualquiera a través de Internet, pueden suponer un problema de seguridad o mermar el rendimiento de una aplicación. En este artículo vamos a estudiar dos de estos ajustes críticos, lo que suelen hacer mal los programadores con ellos y cómo podemos forzar su correcto uso en servidores de producción. Depuración Cuando estamos desarrollando una aplicación Web con ASP.NET (tanto Web Forms como MVC) establecemos una serie de configuraciones que nos facilitan la depuración de las mismas: mensajes de error detallados, depuración paso a paso, trazas del código, etc… Existe un ajuste en la configuración de la aplicación Web (archivo web.config) que controla de manera global el estado de depuración y, por tanto, todas estas características: <compilation debug=”true... [Más]

Cambiando los límites de las URLs en ASP.NET 4.0

Cambiando los límites de las URLs en ASP.NET 4.0
La última versión de ASP.NET, la 4.0, incorpora varias opciones de configuración que tienen que ver con las URLs de nuestras páginas. Por ejemplo: los caracteres que son válidos y, por lo tanto, admitidos en una URL. Por defecto existen 8 caracteres especiales que no se admiten en la ruta de una página, a saber: <>&*%:\? La verdad es que es bastante lógico, puesto que no puede existir ningún archivo ni carpeta que los use en su nombre, y además el "et" o "ampersand" (&) y la interrogación (?) forman parte siempre de la parte de parámetros o "Query String" de una URL, no de la ruta. Cuando se introduce uno de estos caracteres en una URL, ASP.NET devuelve un error 400, de petición errónea: En ASP.NET 4.0 es posible definir la lista de caracteres no válidos en una URL tocando el web.config de la aplicación, en concreto el nodo httpRuntime en su propiedad requestPathInvalidChars: <httpRuntime requestPathInvalidChars="&lt;,&gt;,*,%,&amp;,:,\,?" ... [Más]

Anexo a mi libro de ASP.NET 4.0 - Plantillas AJAX

Anexo a mi libro de ASP.NET 4.0 - Plantillas AJAX
Por fin está disponible el anexo a mi libro de ASP.NET 4.0. Se trata de un pequeño capítulo adicional que explica unos pequeños cambios que ha habido en la versión definitiva respecto a la funcionalidad de plantillas HTML enlazadas a datos de ASP.NET Ajax Library, en el capítulo 5. Básicamente explica cómo obtener la última versión del código de Script y sacarle partido desde ASP.NET o desde cualquier otra tecnología (PHP, JSP, MVC o incluso HTML puro y duro), y los pequeños cambios en sintaxis que ha habido en un par de características en la versión final. Puedes leerlo íntegramente gratis on-line en Scribd: Tecnologías ASP.NET 4.0 - Anexo A - Enlazado a datos AJAX

Uso de la caché de ASP.NET 4.0 fuera de aplicaciones Web - Perfiles de .NET

Uso de la caché de ASP.NET 4.0 fuera de aplicaciones Web - Perfiles de .NET
La caché de ASP.NET es una maravilla. Permite almacenar en memoria (o en otra ubicación, ya que es extensible) datos costosos de obtener y que no caduquen de inmediato. De esta forma las siguientes veces que debamos utilizarlos en la misma aplicación podremos obtenerlos desde la caché sin necesidad de volver a calcularlos o generarlos. Además la caché de ASP.NET ofrece un montón de características avanzadas que van más allá del simple almacenamiento. Por ejemplo podemos establecer caducidades de la información tanto en un determinado momento en el futuro, si no se utiliza tras un periodo, haciendo que unas informaciones dependan del valor de otras o creando dependencias de ciertos elementos externos (como un archivo, una consulta en la base de datos o una clave del registro). Esto último es de especial interés, pues nos brinda la posibilidad de hacer cosas bastante complicadas sin apenas código. Por ejemplo, si nuestra aplicación depende de la información almacenada en un archivo en e... [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