2010-07-23 5 views
1

J'ai développé un service Web isapi dans Delphi 7 et je dois l'installer dans un serveur afin qu'il puisse être utilisé par une application C#.Installation d'un service Web isapi delphi 7

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

Lorsque j'appelle le service Web à partir du navigateur (http://localhost/webservice/ws.dll), le site Web du service Web créé par Delphi s'affiche par défaut. Si je crée la référence Web dans l'application C#, la référence est chargée normalement en utilisant l'URL fournie ci-dessus. Le problème est que lorsque je débogue l'application C# étape par étape, il appelle une fonction à l'intérieur du service Web Delphi mais il ne fait rien. Le service Web ne renvoie rien. Je me souviens d'avoir eu un problème similaire auparavant et la façon de le réparer consistait à copier quelques Delphi dans le dossier system32 du serveur sur lequel j'installais le service Web, mais je ne me souviens pas des fichiers dont j'avais besoin pour copier et si cela résout effectivement le problème.

La consommation du service Web ne génère aucune exception dans l'application .net. Ça ne fait rien. Les fonctions ne retourne rien.

Des idées?

+0

Que fait le service web Delphi? Charge-t-il des DLL supplémentaires? Si oui, lesquels et d'où? --jeroen –

+1

J'ai trouvé le problème. J'ai oublié que j'ai créé une routine qui configure le service Web à partir d'un fichier ini supposé se trouver dans un chemin spécifique. J'ai vérifié le code delphi (je n'ai pas eu la chance de le faire sur le serveur car je n'ai pas installé delphi pour des raisons évidentes) et j'ai vu le chemin delphi. J'ai placé le fichier ini où il devrait être et cela fonctionne bien maintenant. Mon service Web en consommait un autre et le problème était que, comme il ne pouvait pas trouver le fichier ini, les URL de test de l'autre service Web étaient vides. Nous vous remercions de votre aide. – Alvos

Répondre

1

Le problème était le suivant.

Mon service Web est utilisé pour consommer le service Web delphi d'un autre utilisateur. J'ai dû développer ce service web car il y a une application .NET qui devrait consommer le service web delphi de l'autre gars mais le gars qui l'a développé a utilisé des types de données complexes que .NET ne supporte pas. J'ai donc dû développer mon service web pour agir en tant que traducteur. J'ai utilisé les types de données supportés par .NET dans celui-là et l'application .NET consomme mon service web delphi juste pour consommer le service web de l'autre gars. C'est un peu compliqué mais je n'ai pas réussi à persuader l'autre gars d'utiliser des types de données standards. 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 souviens pas que j'ai développé cette routine pour rechercher ce fichier ini dans un chemin spécifique.

Les regards de routine comme 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 alors quand mon service web a essayé de consommer de service Web de l'autre gars, l'URL SOAP configuré dans mon service web était vide . J'ai changé la routine pour chercher le fichier ini dans le même dossier où mon service Web est hébergé et ça fonctionne bien maintenant. Pas besoin de copier les fichiers dans le dossier system32. C'était mon désordre.

Merci à tous pour votre aide;)

+0

indice: vous pouvez accepter vos propres réponses;) – mjn

Questions connexes