Question

J'ai développé un service Web ISAPI à Delphi 7 et je dois l'installer sur un serveur afin de pouvoir être consommé par une application C #.

J'ai copié la DLL de l'ISAPI dans un dossier et crée un répertoire virtuel dans l'IIS du serveur.

Lorsque j'appelle le service Web à partir du navigateur ( http://Localhost/webservice/ws.dll ) Le site Web du service Web que Delphi crée pour défaut apparaît. Si je crée la référence Web dans l'application C #, la référence est chargée normalement à l'aide de l'URL que j'ai fournie ci-dessus.

Le problème est que lorsque j'ai débogué l'étape de l'application C # par étape, il appelle une fonction à l'intérieur du service Web DELPHI, mais cela ne fait rien. Le service Web ne renvoie rien.

Je me souviens que j'ai eu un problème similaire auparavant et la façon de résoudre le problème était de copier du dossier Delphi DLL au dossier System32 du serveur dans lequel j'installisais le service Web mais je ne me souviens pas de quels fichiers que je devais copier et si cela résout le problème.

consommer le service Web ne jette aucune exception à l'intérieur de l'application .NET. Ça ne fait rien. Les fonctions ne renvoient rien.

Des idées?

Était-ce utile?

La solution

Le problème était le suivant.

Mon service Web est utilisé pour consommer le service Web Delphi d'un autre gars. J'ai dû développer ce service Web car il existe une application .NET qui devrait consommer le service Web Delphi de l'autre gars, mais le gars qui a développé il a utilisé des types de données complexes que .NET ne prend pas en charge. J'ai donc dû développer mon service Web pour agir en tant que traducteur. J'ai utilisé des types de données supportés .NET dans cette application et la application .NET consomme mon service Web Delphi pour consommer le service Web de l'autre gars. C'est une sorte de désordre mais je n'ai pas pu convaincre l'autre gars d'utiliser des types de données standard. Mon service Web a une routine qui prend l'URL SOAP du service Web de l'autre gars à partir d'un fichier INI. Je ne me souvenais pas que j'ai développé cette routine pour rechercher ce fichier INI dans un chemin spécifique.

La routine ressemble à ceci:

 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','');

J'ai eu le fichier INI dans un endroit différent, donc lorsque mon service Web a essayé de consommer le service Web de l'autre gars, le SOAP URL est configuré dans mon service Web était vide. J'ai changé la routine pour rechercher le fichier INI dans le même dossier où mon service Web est hébergé et cela fonctionne bien maintenant. Pas besoin de copier des fichiers dans le dossier System32. C'était mon gâchis.

Merci à tous pour votre aide;)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top