Comment puis-je configurer IIS 7 pour permettre une connexion de base de données distante à partir d'un serveur Web ISAPI

StackOverflow https://stackoverflow.com/questions/3902845

Question

J'ai une application de service Web natif (ISAPI) que j'ai construit avec Delphi 2010. A cette époque, il expose que deux méthodes. Le premier, EchoString, est conçu pour me donner des commentaires que le service Web fonctionne correctement, et il ajoute un caractère de couple à la chaîne que je transmets à partir de mon client de service Web Delphi. Cela fonctionne toujours bien.

La seconde méthode exposée est celle que je suis vraiment intéressé. Je passe cette méthode une chaîne qui contient le contenu XML d'un ClientDataSet. Du côté du serveur, mon code prend ce code XML et l'insère dans un ClientDataSet, après quoi il poste ces données à une base de données côté serveur.

J'utilise pour se connecter à une base de données Interbase sur le côté serveur (composants IBExpress IBDatabase, IBTransaction, IBQuery, etc.).

Le problème est que dès que je tente de connecter le composant IBDatabase à sa base de données, la méthode Web échoue. Je pense avoir écarté toutes les autres sources de cette erreur. Je peux créer et alimenter le ClientDataSet avec le ENVOYÉ XML de ClientDataSet assez grand du client qui comprend des ensembles de données imbriqués sans problèmes (j'utilise l'unité MidasLib, de sorte que le ClientDataSet ne tente pas de charger un DLL). Je peux créer et configurer, à court de se connecter à la IBDatabase et ses différentes composantes. Encore une fois, sans problème. Dès que je mis la propriété Connected composant IBDatabase True à partir du service Web, il échoue.

Je suis en cours d'exécution IIS 7.5 sous Windows 7 64 bits Édition Intégrale (sur ma machine de développement). J'ai essayé accorder des droits de contrôle total à tous (ainsi que spécifiquement IIS_IUSRS) à la fois la DLL spécifique ISAPI, ainsi que tout le répertoire dans lequel réside le service Web. Cela n'a pas résolu le problème.

Je pense que cela est tout à fait un privilège problème avec IIS 7. Que puis-je faire pour me permettre ISAPI service Web pour se connecter à l'API client InterBase afin que je puisse utiliser le service Web pour écrire à mon serveur de base de données? '' '' '' '' '' «
Post Script: Il semble que la connexion à Interbase du service Web est pas le problème. Je suis traqué toujours sur la cause exacte, mais je suis maintenant capable de se connecter avec succès à Interbase à partir du service Web. Je mettrai à jour ce poste une fois que je connais la cause, mais cette question n'est plus valide. '' '' ' «
Je marquais la réponse de Bob comme correct. La chaîne de connexion est mauvaise. En fait (ce qui est embarrasing, mais je préfère être embarrassé que trompeur), je me suis mordu par un avec article.

J'emmagasinés mes informations de connexion dans les chaînes de ressources. J'ai fait l'affectation dans un avec article. Le nom de la chaîne de ressource pour la propriété DatabaseName était DatabaseName. avec clause a causé la propriété DatabaseName à attribuer à lui-même, au lieu de la valeur dans la chaîne de ressources. Je fixe le problème en préfacer la chaîne de ressource DatabaseName avec le nom de l'unité (c.-à-DatabaseName: = IBModUnit.DatabaseName;).

Était-ce utile?

La solution

Je suppose que vous pouvez utiliser la même chaîne de connexion pour se connecter à la base de données Interbase à partir d'une « native » application VCL Forms sur cette machine?

Une question idiote peut-être, mais vous exécutez Interbase en tant que service? (Dans le cas contraire, la DLL ISAPI ne sera pas en mesure de « voir » pour vous y connecter).

Autres conseils

[Modifier]
Désolé. J'ai écrit une chose stupide suggérant que IIS aura pas de permissions réseau Et je ne peux pas sembler supprimer ce message!

Mais - je l'ai lu quelque part que les autorisations de service sur les versions ultérieures de Windows ont été quelque peu réduite et le compte LocalSystem n'a plus accès au réseau. Voyant que le titre du message contient vous devez peut-être « à distance » accorder des autorisations supplémentaires à votre DLL ou d'un service et / ou le service Interbase ou l'un des autres fichiers impliqués?

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