viernes, noviembre 18, 2005

Depuración ASP 3.0 usando Visual Studio .Net 2003

Por mucho que uno pretenda estar a la última en tecnologías de desarrollo, al final acaba envuelto en proyectos "desactualizados" en los que priman las tecnologías obsoletas y las "malas artes de programación". En este caso me estoy refiriendo a ASP 3.0, tecnología que desgraciadamente se popularizó in-extremis en el mundo de los negocios.

Si tenéis la desgracia de tener que retomar antiguos proyectos realizados en esta tecnología, aqui os brindo un método para "activar" la depuración integrada en Visual Studio .Net 2003 (VS2003) y utilizar esta herramienta (a cuyo IDE y "facilidades" todos estamos más que habituados) para desarrollar y trabajar airosamente con ASP 3.0.

En primer lugar, necesitaréis:

- Windows XP o 2000 con IIS
- Visual Studio 2003 con VB.NET instalado (no he probado si funciona sólo con C# sólo)
- Un proyecto a arreglar o ampliar realizado en ASP 3.0 (con versiones anteriores también es posible que funcione), partimos de la base de que el proyecto en IIS está creado y funcionando ok?

1º PASO:

- Configurar el proyecto de IIS:
- Pestaña "Directorio Virtual"
- Aplicación correctamente creada, con su nombre puesto
- Pulsamos sobre "configuración" y en la pestaña "Depuración" activamos la casilla: "Habilitar depuracion de secuancias de comados ASP en el servidor", mientras que dejamos desmarcada la casilla de depuración en el cliente.
- Aplicamos los cambios

2º PASO:

- Seguridad:
- En "Panel de Control", "Herramientas Administrativas", "Administración de Equipos", "Usuarios Locales y Grupos":
- Editamos el grupo "Usuarios del Depurador" y le añadimos los usuarios del IIS:
IWAN_{NOMBREMAQUINA},
IUSR_{NOMBREMAQUINA}

3º PASO:

- Configuración ASP.NET
- Localizamos el fichero "machine.config"
(típicamente: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config)
- Editamos el fichero, localizamos la clave "processModel" que debe contener algo parecido a:

processModel enable="true" timeout="Infinite" idleTimeout="Infinite" shutdownTimeout="0:00:05" requestLimit="Infinite" requestQueueLimit="5000" restartQueueLimit="10" memoryLimit="60" webGarden="false" cpuMask="0xffffffff" userName="machine" password="AutoGenerate" logLevel="Errors" clientConnectedCheck="0:00:05" comAuthenticationLevel="Connect" comImpersonationLevel="Impersonate" responseDeadlockInterval="00:03:00" maxWorkerThreads="20" maxIoThreads="20"

- sustituímos el valor userName="machine", por userName="SYSTEM"

4º PASO:

- Reiniciamos la máquina (importante, no saltarse este paso por que es inprescindible, no es coña)

5º PASO:

- Abrimos VS2003 y creamos un nuevo proyecto de Visual Basic, del tipo "Nuevo Proyecto en Carpeta Existente"
- Nos aparece un asistente en que tendremos que dar un nombre al proyecto, y posteriormente nos pide la localización del proyecto, en nuestro caso será algo como "http://localhost/nombreproyecto"

6º PASO:

- Una vez creado el proyecto, nos aparece vacío, deberemos incluir los ficheros .ASP existentes, para lo cual en el Explorador de Soluciones pulsamos sobre el icono para mostrar todos los archivos, e incluimos todos los archivos que queramos

- Lo único que nos falta es configurar el Proyecto de VS para activar la depuración ASP, nos vamos a las propiedades del proyecto, y en la sección "Propiedades de Configuracion / Depuración", activamos la casilla "Depuración ASP" y desactivamos la casilla "Depuracion ASP.NET"

- Voilá, el proyecto está listo para ser depurado!

FINAL:

Espero que lo que aquí cuento le sirva a más de uno, para dejar de darse chocázos contra ASP y a terminar sus tareas a tiempo de volver a casita a su hora. Gracias por vuestra atención!

2 comentarios:

Unknown dijo...

Muchísimas gracias, me ha sido de gran ayuda.

llvll3T4L F0R3V3R dijo...

Bravo !! Muchísimas gracias amigo, no sabes cuanto me has ayudado, recién entré en una empresa y me asignaron un proyecto en VS2003 (lo cual vengo de programar en 2005/2008/2010 Beta, en fin) y no encontraba la manera de como lograr depurar, de pasó el código de dicho proyecto no es mio sino de un programador anterior y pues...muchas malas prácticas de programación que tiene, casi ilegible y sucio su código. Gracias me has salvado de unos reventones de cabeza ^^;