Come faccio a configurare IIS 7 per consentire una connessione remota al database all'interno di un server Web ISAPI

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

Domanda

Ho un'applicazione di servizio Web nativa (ISAPI) che ho costruito con Delphi 2010. In questo momento, si espone solo due metodi. Il primo, echoString, è stato progettato per darmi le risposte che il servizio Web funzioni correttamente, e si aggiunge un paio di caratteri per la stringa che mando ad esso dal mio client di servizi Web Delphi. Questo funziona sempre bene.

Il secondo metodo esposto è quello che sto veramente interessato a. Io passo questo metodo una stringa che contiene il contenuto XML di un ClientDataSet. Dal lato server, il mio codice prende questo XML e l'inserisce in un ClientDataSet, dopo di che essa messaggi questi dati a un database sul lato server.

Sto usando componenti IBExpress (IBDatabase, IBTransaction, IBQuery, ecc) per connettersi a un database InterBase sul lato server.

Il problema è che, non appena tento di collegare il componente IBDatabase al proprio database, il metodo Web non riesce. Credo di aver escluso tutte le altre fonti di questo errore. Posso creare e popolare il ClientDataSet con SENT XML una piuttosto grande di ClientDataSet dal client che include set di dati nidificati senza problemi (sto usando l'unità MidasLib, in modo che il ClientDataSet non sta cercando di caricare una DLL). Posso creare e configurare, a corto di connessione a, l'IBDatabase e le sue varie componenti. Ancora una volta, senza problemi. Non appena ho impostato proprietà Connected del componente IBDatabase True all'interno del servizio Web, non riesce.

Sono in esecuzione di IIS 7.5 in Windows 7 64-bit finale (sulla mia macchina di sviluppo). Ho provato la concessione dei diritti di controllo completo a tutti (così come specificamente per IIS_IUSRS) sia alla specifica ISAPI DLL, così come per tutta la directory in cui risiede il servizio Web. Questo non ha risolto il problema.

Ho il sospetto che questo è del tutto un problema di privilegi con IIS 7. Cosa posso fare per consentire il mio servizio Web ISAPI per connettersi al client API di InterBase in modo che possa utilizzare il servizio Web di scrivere al mio server di database? '' '' '' '' '' '
Post Script: Sembra che la connessione a Interbase dal servizio Web non è il problema. Sto ancora rintracciare la causa precisa, ma sono stati in grado di connettersi a Interbase all'interno del servizio Web. Io aggiornerò questo post, una volta che conosco la causa, ma la questione non è più valido. '' '' ' '
Sto segnando la risposta di Bob come quella corretta. La stringa di connessione è stato sbagliato. In realtà (e questo è imbarazzante, ma preferirei essere imbarazzato di fuorviante), mi sono morso da un con clausola.

ho conservato il mio informazioni di connessione nelle stringhe di risorse. Ho fatto l'assegnazione in una con clausola. Il nome della stringa di risorsa per la proprietà DatabaseName era DatabaseName. Il con clausola ha causato la proprietà DatabaseName da assegnare a se stesso, al posto del valore della stringa di risorsa. Ho risolto il problema prefazione la stringa di risorsa NomeDatabase con il nome dell'unità (ad esempio, DatabaseName: = IBModUnit.DatabaseName;).

È stato utile?

Soluzione

Presumo è possibile utilizzare la stessa stringa di connessione per la connessione al database InterBase da un'applicazione "nativa" Forme VCL su quella macchina?

Una domanda stupida, forse, ma non si esegue InterBase come un servizio? (In caso contrario, la DLL ISAPI non sarà in grado di "vedere" di connettersi ad esso).

Altri suggerimenti

[Modifica]
Scusate. Ho scritto una cosa stupida che suggerisce che IIS non avrà autorizzazioni di rete Ed io non riesco a eliminare questo post!

Ma - ho letto da qualche parte che le autorizzazioni di servizio di versioni successive di Windows sono stati ridotti un po 'e l'account LocalSystem non ha più accesso alla rete. Visto che il titolo del post contiene "a distanza" forse è necessario concedere le autorizzazioni in più per la DLL o servizio e / o il servizio Interbase o uno degli altri file coinvolti?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top