Pergunta

Desenvolvi um web service isapi em delphi 7 e preciso instalá-lo em um servidor para que possa ser consumido por uma aplicação c#.

Copiei a dll do isapi em uma pasta e criei um diretório virtual no IIS do servidor.

Quando eu chamo o serviço web do navegador (http://localhost/webservice/ws.dll) o site do serviço web que o delphi cria por padrão aparece.Se eu criar a referência da web no aplicativo C#, a referência será carregada normalmente usando a URL fornecida acima.

O problema é que quando depuro a aplicação C# passo a passo, ela chama uma função dentro do web service delphi mas não faz nada.O serviço web não retorna nada.

Lembro que tive um problema parecido antes e a forma de consertar foi copiar algumas dll's do delphi para a pasta system32 do servidor onde estava instalando o web service mas não lembro quais arquivos precisava copiar e se isso realmente resolve o problema.

Consumir o serviço da web não gera nenhuma exceção dentro do aplicativo .net.Simplesmente não faz nada.As funções não retornam nada.

Alguma ideia?

Foi útil?

Solução

O problema era o seguinte.

Meu serviço web é usado para consumir o serviço web delphi de outro cara.Eu tive que desenvolver esse serviço web, pois existe um aplicativo .NET que deveria consumir o serviço web delphi do outro cara, mas o cara que o desenvolveu usou tipos de dados complexos que o .NET não suporta.Então tive que desenvolver meu web service para atuar como tradutor.Eu usei tipos de dados suportados pelo .NET naquele e o aplicativo .NET consome meu serviço web delphi apenas para consumir o serviço web do outro cara.É meio confuso, mas não consegui convencer o outro cara a usar tipos de dados padrão.Meu serviço web tem uma rotina que pega as URLs SOAP do serviço web do outro cara a partir de um arquivo ini.Não lembrava que desenvolvi aquela rotina para procurar aquele arquivo ini em um caminho específico.

A rotina fica assim:

 ifParams:=TIniFile.Create('C:\BancorTranslator\BancorTranslator.ini');
 HostAnula:= ifParams.ReadString('GLOBAL','HOSTANULA','');
 HostDepos:= ifParams.ReadString('GLOBAL','HOSTDEPOS','');
 HostTrans:= ifParams.ReadString('GLOBAL','HOSTTRANS','');
 HostConsu:= ifParams.ReadString('GLOBAL','HOSTCONSU','');

Eu tinha o arquivo ini em um local diferente, então quando meu serviço web tentou consumir o serviço web do outro cara, os URLs SOAP configurados em meu serviço web estavam em branco.Mudei a rotina para procurar o arquivo ini na mesma pasta onde meu serviço web está hospedado e agora funciona bem.Não há necessidade de copiar nenhum arquivo da pasta system32.Foi minha bagunça.

Obrigado a todos pela ajuda ;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top