Categorias
Depurando módulos IIS ISAPI
Antes de iniciar eu gostaria de frisar que isto não é uma revisão de um produto. Eu encontrei uma maneira excelente de depurar ISAPI DLLs e acontece de exigir uma ferramenta muito barata. Eu só queria compartilhar esta informação, já que tem sido tão útil para mim!
Recentemente eu estive escrevendo alguns serviços web utilizando Delphi 7 e IIS 5 e tem sido uma verdadeira dor para depurá-los.
Eu costumava ter uma referência a um artigo muito bom explicando como configurar o IIS como um processo em vez de um serviço e, em seguida, utilizava o inetinfo.exe como anfitrião app para a DLL, mas eu já não consegui mais encontrá-la. Tentei vários outros artigos / ferramentas, etc, mas não estava satisfeito com nenhum deles. A maioria dos artigos não funcionou (graças a Deus para o Sistema de Restauração do XP) e a maioria das ferramentas são orientadas para web sites, então elas retornam texto / html, em vez de texto / xml, o que confunde o meu cliente de serviço da web.
Ontem eu me deparei com um depurador ISAPI AQUI. Eu o usei apenas por 10 minutos, até agora, e devo dizer que é excelente! Eu não tive que alterar o registro, e os pedidos ainda passam por IIS. Aqui está como ele funciona.
Configuração do Servidor
- Eu criei uma pasta virtual chamada de "depuração", com acesso script.
- Eu coloquei ISAPIfwd.dll nessa pasta, que é um arquivo fornecido com a ferramenta.
E é tudo para o servidor!
Configuração do Cliente
- Abra o meu projeto ISAPI na minha IDE (Delphi neste caso).
- Defina a aplicação anfitriã como ClientISAPI.exe, um outro arquivo fornecido com a ferramenta.
- Defina os parâmetros de execução do meu projeto para o caminho completo + nome de arquivo do meu DLL ISAPI.
Novamente, isso é tudo!
Depurando o ISAPI
- Eu executo o meu projeto ISAPI, ClientISAPI.exe executa.
- ClientISAPI.exe carrega meu DLL (que é a razão pela qual o parâmetro runtime é necessário).
- Meu teste aplicação web service então solicita a seguinte url http://localhost/debug/isapifwd.dll/wsdl/IMyWebService.
- ISAPIfwd.dll recebe o pedido, passa para o ClientISAPI.exe.
- ClientISAPI.exe então executa o código exigido no meu DLL ISAPI, o que significa que eu posso passar pelo do código.
- ClientISAPI retorna a resposta para ISAPIfwd.dll, que, por sua vez, responde ao Cliente.
O que eu realmente gosto sobre esta abordagem é:
- Nenhum registro de modificações é necessário.
- Você pode depurar remotamente no desenvolvimento real do servidor IIS.
- Não é ponderada apenas para websites, qualquer coisa que passa através do IIS + ISAPI pode ser depurado.
- Seu ISAPI não está em cache, assim não há necessidade de ficar iniciando / parando o IIS.