Domanda

Ho sviluppato un servizio Web ISAPI in Delphi 7 e ho bisogno di installarlo in un server in modo che possa essere consumato da un'applicazione C #.

Ho copiato la DLL della ISAPI in una cartella e ha creato una directory virtuale nell'IIS del server.

Quando chiamo il servizio Web dal browser ( http://localhost/webservice/ws.dll ) Il sito Web per il servizio Web che visualizza Delphi crea per impostazione predefinita. Se creo il riferimento Web nell'applicazione C #, il riferimento viene caricato normalmente usando l'URL che ho fornito sopra.

Il problema è che quando debug è il punto di debug dell'applicazione C #, chiama una funzione all'interno del servizio Web Delphi ma non fa nulla. Il servizio Web non restituisce nulla.

Ricordo che ho avuto un problema simile prima e il modo di risolvere è stato quello di copiare alcune DLL Delphi nella cartella System32 del server in cui stavo installando il servizio Web ma non ricordo quali file avessi bisogno di copiare e se questo risolve in realtà il problema.

Consumare il servizio Web non genera alcuna eccezione all'interno dell'applicazione .NET. Non fa nulla. Le funzioni non ritorna nulla.

Qualche idea?

È stato utile?

Soluzione

Il problema era il seguente.

Il mio servizio Web viene utilizzato per consumare il servizio Web Delphi di un altro ragazzo. Ho dovuto sviluppare questo servizio web poiché c'è un'applicazione .NET che dovrebbe consumare il servizio Web Delphi dell'altro ragazzo, ma il ragazzo che ha sviluppato ha utilizzato complessi tipi di dati che .NET non supporta. Quindi ho dovuto sviluppare il mio servizio web per fungere da traduttore. Ho usato .NET i tipi di dati supportati in quella e l'applicazione .NET consuma il mio servizio Web Delphi solo per consumare il servizio Web dell'altro ragazzo. È un po 'disordinato ma non ero in grado di persuadere l'altro ragazzo a utilizzare i tipi di dati standard. Il mio servizio Web ha una routine che prende l'URL di sapone dal servizio Web dell'altro ragazzo da un file INI. Non ricordavo che ho sviluppato quella routine per cercare quel file INI in un percorso specifico.

La routine sembra questa:

 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','');
.

Avevo il file INI in una posizione diversa, quindi quando il mio servizio Web ha provato a consumare il servizio Web dell'altro ragazzo, il SOAP URL configurato nel mio servizio Web è stato vuoto. Ho cambiato la routine per cercare il file INI nella stessa cartella in cui viene ospitato il mio servizio Web e funziona bene ora. Non è necessario copiare alcun file nella cartella System32. Era il mio casino.

Grazie a tutti per il tuo aiuto;)

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