Pregunta

He desarrollado un servicio web de ISAPI en Delphi 7 y necesito instalarlo en un servidor para que pueda ser consumido por una aplicación C #.

Copié la DLL de la ISAPI en una carpeta y creó un directorio virtual en la IIS del servidor.

Cuando llamo al servicio web desde el navegador ( http://localhost/webservice/ws.dll ) El sitio web para el servicio web que aparece Delphi, aparece de forma predeterminada. Si creo la referencia web en la aplicación C #, la referencia se carga normalmente usando la URL que proporcioné anteriormente.

El problema es que cuando deposito la aplicación C # paso a paso, llama una función dentro del servicio web Delphi, pero no hace nada. El servicio web no devuelve nada.

Recuerdo que tenía un problema similar antes y la forma de arreglarlo era copiar algunas DLL de Delphi a la carpeta System32 del servidor en la que estaba instalando el servicio web, pero no recuerdo qué archivos necesitaba para copiar. y si eso realmente resuelve el problema.

Consumir el servicio web no lanza ninguna excepción dentro de la aplicación .NET. Simplemente no hace nada. Las funciones no devuelven nada.

¿Alguna idea?

¿Fue útil?

Solución

El problema fue el siguiente.

Mi servicio web se utiliza para consumir el servicio web de Delphi de otro tipo. Tuve que desarrollar este servicio web ya que hay una aplicación .NET que debería consumir el servicio web de Delphi de otro tipo, pero el tipo que desarrolló que usó tipos de datos complejos que .NET no admite. Así que tuve que desarrollar mi servicio web para actuar como traductor. Utilicé los tipos de datos compatibles con .NET en esa y la aplicación .NET consume mi servicio web de Delphi solo para consumir el servicio web del otro tipo. Es un poco desordenado, pero no pude persuadir al otro tipo a usar tipos de datos estándar. Mi servicio web tiene una rutina que toma las URL de SOAP del servicio web de otro tipo desde un archivo INI. No recordaba que desarrollé esa rutina para buscar ese archivo INI en un camino específico.

La rutina se ve así:

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

Tuve el archivo INI en una ubicación diferente, por lo que cuando mi servicio web intentó consumir el servicio web del otro tipo, la URL de SOAP configurada en mi servicio web estaba en blanco. Cambié la rutina para buscar el archivo INI en la misma carpeta donde se está alojando mi servicio web y funciona bien ahora. No es necesario copiar ningún archivo en la carpeta System32. Fue mi desorden.

Gracias a todos por su ayuda;)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top