Cómo instalar una DLL en el GAC (Global Assembly Cache)

En ocasiones, cuando estás trabajando en Visual Web Developer 2008 con componentes ASP.NET de terceros (third party), notarás que no funciona el Intellisense y además el diseñador marca que tu componente no está definido. Este es un ejemplo de este problema con el componente FreeTextBox:

Component Not Declared

Noté que esto me pasaba por la siguiente razón: Los archivos de mi aplicación están hosteados en un servidor (no en mi PC de desarrollo), por lo que creé una conexión a una unidad de red, asignándola a una letra. Es decir, habí­a mapeado servidorinetpubwwwrootproyecto a w:proyecto. Al parecer si tienes tu servidor web de desarrollo corriendo en tu misma PC, lo anterior no ocurre, pero me parece que es muy probable que trabajes en una PC de desarrollo y accedas a un servidor de desarrollo mediante la red local donde están (y corren) los archivos de tu aplicación. Al menos es mi caso.

Para corregir esta situación tienes que agregar los DLLs del control en el GAC.

Deberás usar la utilidad gacutil.exe que viene en el SDK del .Net Framework 2. Si no lo tienes, descarga el SDK de aquí­: http://www.asp.net/Downloads/essential/

Coloca el componente (el DLL) en un fólder de la PC en la que usas Visual Web Developer 2008:
explorer.gif

Ahora abre una ventana de MS-DOS, cámbiate a la carpeta en la que tienes instalado el gacutil.exe y corre el comando:

gacutil -i nombredeldll.dll

Algo como esto:
Registrando el DLL en el GAC

Ahora reinicia Visual Web Developer, abre tu aplicación de nueva cuenta y mira como ya funciona el Intellisense y no aparece el error de que tu control no está declarado:
Intellisense funcionando

Espero que te sea de utilidad. 🙂

Actualización
Si necesitaras desinstalar la libreria del GAC, utiliza esta instrucción:
gacutil -u NombreDeLaLibreria
No escribas .dll
Por ejemplo:
gacutil -u FreeTextBox

Bloqueo del puerto 25 por Prodigy Infinitum

Prodigy Infinitum es el proveedor más grande de Internet en México. Recientemente tomaron la determinación de bloquear el puerto 25 para combatir el SPAM o correo basura.

Para los proveedores de hosting esto es un problema, porque los clientes utilizan principalmente Infinitum y perdieron la capacidad de enviar mensajes desde sus oficinas usando Outlook o Thunderbird. Sí los pueden descargar porque el puerto de POP que es el 110 no fue bloqueado.

¿Cómo solucionarlo?

Si eres un proveedor de hosting, esta es la mejor solución:

Antes que nada, no cambies tu servidor de e-mail a un puerto diferente. Déjalo en el puerto 25 porque todos los servidores de mail externos (hotmail, gmail, yahoo, etc) intentarán conectarse con tu servidor de mail usando el puerto 25. Si pones a tu servidor de mail a escuchar en otro puerto, los correos de servidores externos no lo encontrarán y tus clientes no recibirán mails.

Ok, con ese asunto aclarado, tienes que hacer lo siguiente:

Al seleccionar un nuevo puerto, no puedes elegir el que se te venga a la mente, busca en Internet información sobre los diferentes puertos porque hay varios números que ya están reservados para otros servicios, como FTP, bases de datos, etc. El 26 está libre y lo puedes usar sin problemas.

1. Redirigir el tráfico del puerto 26 al 25

Si tu servidor de mail lo soporta, indícale que escuche en el puerto 25 y en el 26 (u otro número de tu elección) y sáltate toda la explicación siguiente del paso 1. Si no soporta múltiples puertos, entonces deberás redirigir todo el tráfico del puerto externo 26 (u otro número de tu elección) al puerto interno 25.

Esto también se puede llamar “port mapping”. Estas son dos herramientas que me recomendaron para hacerlo, aunque no las he probado:

  1. Greyware Detour – http://www.greyware.com/software/detour/index.asp
  2. Port mapper, v1.40 – http://www.kmint21.com/free/port-map.zip

Una tercera opción y que sí he probado, es utilizar el Windows Firewall/Internet Connection Sharing (ICS). Para hacerlo, primero asegúrate que el servicio esté encendido y marcado como automático.

Firewall de Windows

Puedes abrir el Firewall de Windows desde el panel de control:

Panel de Control

Si no está encendido, enciéndelo:

Enciende el Firewall

Haz clic en la pestaña Advanced, selecciona Public bajo Network Connection Settings y oprime el botón Settings....

Pestaña Advanced

En la ventana que aparece, oprime Add... para dar de alta una nueva entrada y realizar la redirección o mapeo de puertos. Notarás que yo ya lo he hecho, mi entrada se llama Programa de mail.

Dar de alta la entrada de la redirección

Esta es la configuración de dicha entrada, he puesto una dirección IP ficticia, modifícala por tu IP pública:

Configuración de redirección

Acepta los cambios y la redirección ha sido realizada. Ahora, todo el tráfico que llegue a tu servidor solicitando el puerto 26 será reenviado al puerto 25. De esta manera es como si tu servidor de mail estuviera escuchando por ambos puertos.

Solamente ten en cuenta que si no tenías habilitado tu Firewall y lo acabas de habilitar, tienes que abrir los puertos para los demás servicios, como FTP, Web, etc. Esto lo haces desde la misma ventana, pero en la pestaña Exceptions. Haz clic en Add Port... y configura el puerto que deseas abrir:

Abrir otros puertos

Busca una lista de puertos en Internet para saber cuáles debes abrir.

Lo que me gusta de esta solución es que no hay que instalar nada adicional en el servidor, y el Firewall de Windows corre como un servicio, así que te aseguras de que siempre estará activo, aún después de reiniciar el servidor.

2. Pedir a tus clientes que modifiquen la configuración de su Outlook o Thunderbird

Suponiendo que seleccionaste el puerto 26, tendrás que pedirles a tus clientes que realicen la modificación del Servidor de Salida (SMTP) en sus clientes de e-mail (Outlook, Thunderbird, Eudora, etc), borrando el número 25 y colocando el 26.

SMTP

Los pasos para realizar esta configuración varían de programa a programa, busca información en Internet para saber cómo hacer este cambio.

Al usar el puerto 26, el Outlook de tus clientes se conectará a tu servidor por el puerto 26, tu servidor lo redireccionará al puerto 25, donde está escuchando tu servidor de mail. Tu cliente nunca utilizó el puerto 25, que ha sido bloqueado.

Si tienes otros clientes cuyo proveedor de Internet no ha bloqueado el puerto 25, entonces puedes pedirles que realicen el cambio al puerto 26 o que no hagan nada. De cualquiera de las dos formas podrán enviar y recibir correo sin problemas.

Administración remota con Real VNC

Windows tiene una herramienta para administrar equipos de manera remota, llamada Remote Desktop. Funciona excelentemente con servidores de la familia Windows.

Si encuentras problemas con esta herramienta, o si no logras configurarla, existe una alternativa (no tan confiable pero gratuita) llamada Real VNC.

Puedes encontrar toda la información en esta liga:

http://www.realvnc.com/

Archivo .bat para apagar un servidor Windows desde otra PC en la misma red

Si usas un servidor local seguramente tienes la pura caja, sin monitor ni teclado. Cuando trabajas en el servidor lo haces usando Escritorio Remoto (Remote Desktop). Si es así, te gustará este tip para apagar tu servidor haciendo doble clic en un archivo .bat desde cualquier PC en tu red local.

Simplemente abre un bloc de notas y teclea lo siguiente:

shutdown /s /m servidor

Guarda el archivo como apagar.bat. Listo, ahora dale doble clic y tu servidor se apagará.

Nota: Debes estar autenticado en el servidor. Es decir, conéctate al servidor tecleando servidor en el explorador de windows y proporciona tu nombre de usuario y contraseña.

Si ejecutaste el archivo apagar.bat e inmediatamente después te das cuenta de que no lo querías apagar, debes ejecutar el siguiente comando para abortar el apagado:

shutdown /a /m servidor

Solamente funciona si lo haces en 30 segundos o menos después de haber enviado el primer comando.

Igual que antes, puedes teclear esto en un archivo y llamarlo abortar.bat para tenerlo a la mano en caso de que te arrepientas.

Crea una tercera sesión de Escritorio Remoto (Remote Desktop)

Cuando intentas conectarte a tu servidor con Escritorio Remoto (Remote Desktop) obtienes el siguiente error:

Servicios de Terminal Server ha sobrepasado el número máximo de conexiones permitidas. El sistema no puede iniciar su sesión en (1B8E). Vuelva a intentarlo o consulte a su administrador del sistema.

En inglés:
The terminal server has exceeded the maximum number of allowed connections. The system cannot log you on (1B8E). Please try again or consult your system administrator.

La razón es que el servidor solamente acepta 2 sesiones remotas, ya sea activas o desconectadas. Es decir, abriste dos sesiones y las dejaste abiertas (simplemente cerraste las conexiones cerrando la ventana de Escritorio Remoto en vez de hacer clic en Inicio -> Cerrar sesión).

Afortunadamente puedes crear una tercera sesión ejecutando este comando desde una ventana de MS-DOS:

c:>mstsc /v:ip_del_servidor /console

Esto te permitirá conectarte a la sesión de consola de tu servidor, y una vez dentro te recomiendo matar las sesiones que se quedaron activas.

Por cierto, si piensas reiniciar tu servidor, la manera más confiable de hacerlo es desde la sesión de consola.