Ir al contenido


Foto

Depurar un módulo ISAPI (Internet Information Server)


  • Por favor identifícate para responder
8 respuestas en este tema

#1 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 05 agosto 2016 - 01:37

Hola amigos.

 

He programado un servidor Datasnap REST que me funciona perfectamente como StandAlone application, pero solo funciona a medias cuando lo compilo y ejecuto como módulo ISAPI servidor en un Internet Information Server (Delphi 10.1 Berlin, Windows 7 64bits).

 

Me gustaría depurarlo para identificar y corregir el error. Para ello hago una compilación con build DEBUG, y lo pongo en un directorio virtual del I.I.S. de mi ordenador de desarrollo. Ejecuto Delphi como Administrador (para ver los procesos de DefaultAppPool) y enlazo el depurador con el proceso de IIS mediante Run ... Attach ... a w3wp.exe

 

Pero no puedo establecer puntos de ruptura en mi código, la ejecución nunca se detiene allí (además marca los break-point desactivados, como cuando ejecutas con build RELEASE en lugar de DEBUG). Es más, es que mientras IIS está enlazado al debugger de Delphi no se ejecuta nada, es como si estuviera congelado.

 

He seguido estas instrucciones: http://edn.embarcade...m/article/40873

 

¿ Alguién ha podido depurar código Delphi compilado como un módulo ISAPI y me puede aconsejar ?.

 

Gracias.


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 05 agosto 2016 - 07:09

Hola Marc, yo si he depurado modulos ISAPI, ahora mismo no tengo todos los pasos, pero dejame ver, en mi bitácora tengo un tutorial que no he publicado por inconcluso  :embarrassed:

 

Saludos


  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 05 agosto 2016 - 07:19

Caray, no tiene la parte buena de la depuración con razón no lo publiqué, éste fin de semana voy a hacer un depurador para recordar y poder darte un buen tip, aunque creo que será mejor que lo haga como video. 

 

Saludos


  • 0

#4 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 05 agosto 2016 - 10:34

Caray, no tiene la parte buena de la depuración con razón no lo publiqué, éste fin de semana voy a hacer un depurador para recordar y poder darte un buen tip, aunque creo que será mejor que lo haga como video. 

 

Saludos

 

Te lo agradezco mucho. :)


  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 10 agosto 2016 - 12:09

Lo prometido es deuda, después de unos días he podido terminar el tutorial para la depuración de Servicios Web, espero que sea de utilidad. :)
 
Depurar un Servicio Web

 

 

Saludos


  • 1

#6 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 11 agosto 2016 - 05:15

Buen tutorial, muy claro, felicidades.  :ap:

 

Esto es lo que yo también hago para depurar mi código servidor, lo compilo como StandAlone application y entonces la depuración es immediata. Es la forma más cómoda de revisar tu código.

 

El problema lo tengo cuando pongo el módulo en producción, para ello lo recompilo como módulo ISAPI para ser servido en un servidor IIS. Pero los datos WebRequest que llegan al WebModuleDispatcher parecen ser ligeramente distintos a como llegaban en la StandAlone application. Por eso quiero depurar directamente la librería ISAPI que se ejecuta en el Servidor IIS, para ver exactamente que datos recibe, etc. ...

 

Este tutorial explica como depurar línea a línea tu librería ISAPI ejecutándose en IIS: http://edn.embarcade...m/article/40873 pero me debe faltar hacer algo más, no se me para en los puntos de ruptura.

 

Seguiré probando :(


  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 11 agosto 2016 - 07:47

Ya entiendo.

Y no será más fácil un sniffer para ver el request y el response?


Saludos
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 11 agosto 2016 - 08:19

Vaya, viendo el documento que enlazas, ya veo muy pobre mi tutorial  :embarrassed:

 

Tengo que hacer algo al respecto  :cheesy:

 

Saludos


  • 1

#9 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 11 agosto 2016 - 10:35

Ya entiendo.

Y no será más fácil un sniffer para ver el request y el response?


Saludos

 

Haciendo que el módulo ISAPI guarde unos archivos de Log, con la información que necesito revisar, he encontrado que finalmente el problema no lo tengo en los datos que llegan o se envían, sino con lo que hago con esos datos. Repasando las clases de las cuatro líneas que utilizo en el Dispatcher, he encontrado la causa del problema (aunque no la solución).

 

El WebRequest que llega al dispatcher puede ser un TISAPIRequest (en los módulos ISAPI) o un THTTPAppRequest (en las aplicaciones standalone), mi código asumía que todas las WebRequest eran HTTPAppRequest, y por eso funcionaba como standalone y falla al ejecutarse como módulo ISAPI.

 

Pero no sé escribir un código para una TISAPIRequest que que haga lo que necesito, y que sí he podido programar para las THTTPRequest.  :(

 

Voy a abrir un nuevo hilo sobre este tema, a ver si hay suerte y alguién conoce esto más que yo.


  • 0




IP.Board spam blocked by CleanTalk.