我在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服务不会在.NET应用程序内丢失任何异常。它只是没有做任何事情。函数没有返回。

任何想法?

有帮助吗?

解决方案

问题如下。

我的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文件夹中复制任何文件。这是我的混乱。

谢谢你们的帮助;)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top