2009-09-30 9 views
2

J'essaie d'exécuter l'exemple d'application de services Web PowerBuilder 10.5.2. Je peux très bien ouvrir l'espace de travail, et je peux voir les objets et même lancer l'application, mais je reçois une erreur de "mauvaise référence de fonction d'exécution" lorsque j'essaie d'appeler le service.Exemple d'application client de services Web PowerBuilder 10.5

Je crois avoir installé toutes les pièces nécessaires:

  • PB 10.5.2
  • .Net 2.0 SDK

recherches sur le Web révèlent que certains des services Web utilisés par l'échantillon app sont terminées, mais je ne peux pas imaginer tous sont, donc l'erreur semble indiquer un problème avec l'installation ou les objets, pas les services de tiers.

Je peux voir pbwsclient105.pbd dans la liste des espaces de travail et dans le répertoire des objets partagés Sybase. Cependant, comme un test, j'ai essayé d'utiliser la méthode alternative de la documentation répertoriée pour configurer le proxy PB aux objets du service Web .Net (en important les extensions PB de pbwsclient105.pbx) et j'ai obtenu une "erreur dll invalide" alors peut-être mon les bibliothèques de service Web sont-elles corrompues?

Quoi d'autre pourrait être manquant? Paramètres de chemin Une installation incorrecte du SDK .Net 2.0?

+0

Etes-vous capable de parcourir l'assistant pour créer un proxy de service Web vers un nouveau service Web? –

Répondre

2

* * * Edit: Problème résolu - au moins sur ma machine (s) * * *

Je pris une queue du fil, j'ai trouvé here et a commencé à examiner ce qui se passait avec PowerBuilder lorsque ces erreurs s'est produite - à la fois pendant l'importation du PBX et pendant l'exécution si vous avez exécuté l'exemple d'application.

Une personne dans le thread mentionné la question était liée à libeay32.dll et ssleay32.dll. Ce n'est pas la première fois qu'OpenSSL m'apporte ces composants - mon disque dur en est jonché dans différents dossiers d'application. Ces DLL sont chargées par PB lorsque l'extension PBWSCLIENT105.PBX est importée ou par une application utilisant le PBD associé lors de l'exécution. Effectivement, en utilisant ProcMon, je suis en mesure de confirmer que libeay32.dll et ssleay32.dll ont été chargés à partir Windows \ System32 par opposition à la version des mêmes DLL situés dans la structure du dossier PB. Apparemment, c'est un problème. J'ai renommé les deux DLL situées dans System32 pour les supprimer efficacement, allumé PB et l'importation de PBWSCLIENT105.PBX a fonctionné comme un charme.


J'ai un problème similaire avec notre installation PB 10.5. Importation du fichier PBX me donne le message d'erreur:

---------- Import PB Extension:
Importing C:\Program Files\Sybase\Shared\PowerBuilder\pbwsclient105.pbx - Error: The file is not a valid dll or pbx file.
---------- Finished

Je pensais d'abord la question était que les dossiers étaient corrompus, etc. Cependant, j'ai installé PB 10.5 sur une machine propre (une VM en fait) avec le SDK .Net 2.0 et l'importation a fonctionné parfaitement; aussi, j'ai pu appeler un service web.Chaque développeur de mon groupe a le même problème sur ses propres machines, mais s'il utilise une machine "propre" ou une machine virtuelle avec PB installé (et peut-être quelques autres applications), l'importation du fichier PBX fonctionne sans problème. À ce stade, j'essaie de déterminer ce qui cause le problème dans l'environnement, mais je n'ai pas encore réussi à le déterminer. Ce qui est intéressant, comme vous l'avez noté, c'est que si vous ouvrez l'exemple d'application, vous pouvez voir exactement les mêmes bibliothèques importées présentes; Cependant, vous obtenez l'erreur lors de l'exécution. Tout cela indique vraiment quelque chose qui manque à l'environnement ou qui est incorrectement enregistré. Donc, si vous avez la possibilité d'utiliser une machine virtuelle, je recommande cela comme un travail temporaire. Une chose que je vais ajouter ici: si vous utilisez Vista ou Windows 7 comme machine virtuelle, l'importation de la bibliothèque fonctionne correctement, mais j'ai eu des problèmes pour générer le proxy côté client en utilisant le moteur de service Web .Net . J'ai finalement découvert qu'en arrière-plan, l'outil SDK WSDL.exe est en cours d'exécution contre le WSDL pour le service afin de produire un proxy côté client .Net. Il s'avère que le contrôle d'accès utilisateur Vista/Win7 empêchait l'exécution de WSDL.EXE. J'ai couru PowerBuilder "en tant qu'administrateur" et tout a fonctionné comme prévu en termes de génération du proxy côté client.

Si vous découvrez quelque chose sur les raisons pour lesquelles l'importation PBX ne fonctionne pas, je serais intéressé à en entendre parler!

+1

Merci Peter! J'ai eu recours à une approche différente de nos besoins en fonctionnalités, mais j'aimerais quand même avoir la possibilité de consommer des services web fonctionnant dans PB. Je vous le ferai savoir si je comprends. –

+0

Bernard, faites s'il vous plaît! Je ferai de même. J'ai oublié de mentionner, l'une des autres façons dont nous avons réalisé l'intégration de services Web et PB (et les applications sur certaines autres plates-formes) est d'enrouler un client de service Web dans une procédure stockée dans le SQLCLR sur SQL Server. Il agit essentiellement comme un proxy. Je ne peux pas dire que je suis trop fier de ça, mais parfois il faut juste faire le travail. –

+0

Peter, vous rock. Je n'ai pas compris la moitié de ce que vous avez dit à propos de "libeay32.dll" (jusqu'à ce que je l'ai cherché) mais le renommer a fait l'affaire. "DLL enfer", comme dit le proverbe. –