安装Delphi 7 ISAPI Web服务
-
28-09-2020 - |
题
我在Delphi 7中开发了一个ISAPI Web服务,我需要在服务器中安装它,以便通过C#应用程序消耗它。
我在文件夹中复制了ISAPI的DLL,并在服务器的IIS中创建了虚拟目录。
当我从浏览器调用web服务时( http://localhost/webservice/ws.dll )将Delphi创建默认值的Web服务网站出现。如果我在C#应用程序中创建Web参考,则使用上面提供的URL IN正常加载参考。
问题是,当我一步一步调试C#应用程序时,它会调用Delphi Web服务中的函数,但它没有任何操作。 Web服务不会返回任何内容。
我记得我之前有过类似的问题,解决方法是将一些delphi dll复制到我安装Web服务的服务器的System32文件夹,但我不记得我需要复制哪些文件如果这实际上解决了问题。
解决方案
问题如下。
我的Web服务用于消耗另一个人的Delphi Web服务。我不得不开发这个Web服务,因为有一个.NET应用程序应该消耗另一个Guy的Delphi Web服务,但是开发它的家伙使用了.NET不支持的复杂数据类型。所以我不得不开发我的网络服务来充当翻译。我使用的.NET支持的数据类型在那个和.NET应用程序中消耗了我的Delphi Web服务只是为了消耗另一个Guy的Web服务。这是一种混乱,但我无法说服其他人使用标准数据类型。 我的Web服务有一个例程,它从INI文件中从另一个人的Web服务中获取SOAP URL。我不记得,我开发了例程,以在特定路径中寻找该INI文件。
例程如下所示:
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','');
.
我在不同的位置中有INI文件,所以当我的Web服务试图消耗另一个人的Web服务时,在我的Web服务中配置的SOAP URL都是空白的。我更改了例程,在托管我的Web服务的同一文件夹中查找INI文件,现在它正常工作。无需在System32文件夹中复制任何文件。这是我的混乱。
谢谢你们的帮助;)