Wie kann ich 7 configure IIS eine Remote-Datenbankverbindung zu ermöglichen, innerhalb einer ISAPI-Webserver

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

Frage

ich eine native Web-Service-Anwendung haben (ISAPI), dass ich mit Delphi 2010. Zu dieser Zeit aufgebaut haben, es macht nur zwei Methoden. Die erste, echostring, soll mir Feedback zu geben, dass der Webdienst ordnungsgemäß funktioniert, und es fügt ein paar Zeichen der Zeichenfolge, dass ich es von meinem Delphi Web-Service-Client senden. Dies immer funktioniert.

Die zweite ausgesetzt Methode ist die, dass ich wirklich bin interessiert. Ich gebe diese Methode eine Zeichenfolge, die die XML-Inhalte einer ClientDataSet enthält. Von der Server-Seite, nimmt mein Code, um diese XML und fügt sie in eine ClientDataSet, wonach sie Beiträge diese Daten zu einem serverseitigen Datenbank.

Ich bin mit IBExpress Komponenten (IBDatabase, IBTransaction, IBQuery, etc.) zu einer Interbase-Datenbank auf der Serverseite verbinden.

Das Problem ist, dass, sobald ich die IBDatabase Komponente seiner Datenbank zu verbinden versuchen, die Web-Methode fehlschlägt. Ich glaube, ich habe alle anderen Quellen für diesen Fehler ausgeschlossen. Ich kann die ClientDataSet mit einem ziemlich großen ClientDataSet XML abgeschickt vom Client erstellen und füllen, die ohne Probleme verschachtelte Datensätze enthält (I die MidasLib Einheit verwenden, so die ClientDataSet nicht eine DLL zu laden versuchen). Ich kann erstellen und konfigurieren, kurz den Anschluss an, der IBDatabase und seine verschiedenen Komponenten. Auch hier ohne Probleme. Sobald ich die IBDatabase Komponente Connected-Eigenschaft auf True aus dem Web-Service festgelegt, es funktioniert nicht.

Ich bin mit IIS 7.5 unter Windows 7 64-Bit Ultimate (auf meiner Entwicklungsmaschine). Ich habe versucht, die volle Kontrolle Rechte Jeder gewähren (wie auch speziell auf IIS_IUSRS) sowohl auf die spezifischen ISAPI DLL, sowie auf das gesamte Verzeichnis, in dem die Web-Service befindet. Das ist nicht das Problem lösen.

Ich vermute, dass dies völlig ein Privilegien Problem mit IIS 7. Was kann ich tun, um meine ISAPI Webdienst zu ermöglichen die Interbase-Client-API zu verbinden, so dass ich den Webdienst zu schreiben, um meine Datenbank-Server verwenden kann? '' '' '' '' '' ‚
Nachsatz: Es scheint, dass der Webdienst Interbase verbindet, ist nicht das Problem. Ich Tracking noch die genaue Ursache nach unten, aber ich habe jetzt in der Lage gewesen zu Interbase aus dem Web-Service, um erfolgreich zu verbinden. Ich werde diesen Beitrag aktualisieren, sobald ich die Ursache kennen, aber diese Frage ist nicht mehr gültig. '' '' ' ‚
Ich Markierung Bobs Antwort als die richtige. Die Verbindungszeichenfolge falsch war. Eigentlich (und das ist peinlich, aber ich würde eher in Verlegenheit gebracht werden, als irreführend), bekam ich etwas von einer mit Klausel.

ich meine Verbindungsinformationen in Ressourcen-Strings gespeichert. Ich machte die Zuordnung in einer mit Klausel. Der Name der Ressource-Zeichenfolge für die Eigenschaft Databasename war Database. Die mit Klausel verursacht die Databasename-Eigenschaft an sich selbst zugeordnet werden, anstelle des Wertes in der Ressource-String. Ich reparierte das Problem durch den Database Ressourcen-String mit dem Gerätenamen prefacing (dh Database: = IBModUnit.DatabaseName;).

War es hilfreich?

Lösung

Ich nehme an, Sie die gleiche Verbindungszeichenfolge verwenden können, um die Interbase-Datenbank von einer „native“ VCL Forms-Anwendung auf dem Computer zu verbinden?

Eine dumme Frage vielleicht, aber laufen Sie Interbase als Service? (Andernfalls wird die ISAPI-DLL nicht in der Lage zu „sehen“, um es ihm zu verbinden).

Andere Tipps

[Bearbeiten]
Es tut uns leid. Ich schrieb eine dumme Sache darauf hindeutet, dass IIS nicht Netzwerk Berechtigungen Und ich kann nicht scheinen, diesen Beitrag zu löschen!

Aber - ich habe irgendwo gelesen, dass die Service-Berechtigungen für spätere Windows-Versionen haben etwas reduziert und das Konto Localsystem nicht mehr Netzwerkzugriff. Sehen als der Post-Titel enthält „remote“ vielleicht müssen Sie zusätzliche Berechtigungen für Ihre DLL oder eine Dienstleistung und / oder den Interbase-Dienst oder einen der anderen Dateien beteiligt gewähren?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top