1

我在 delphi 7 中开发了一个 isapi Web 服务,我需要将它安装在服务器中,以便 ac# 应用程序可以使用它。

我将isapi的dll复制到一个文件夹中,并在服务器的IIS中创建了一个虚拟目录。

当我从浏览器 ( http://localhost/webservice/ws.dll ) 调用 Web 服务时,会出现 delphi 默认创建的 Web 服务的网站。如果我在 C# 应用程序中创建 Web 引用,则使用上面提供的 URL 正常加载引用。

问题是,当我逐步调试 C# 应用程序时,它会调用 delphi Web 服务中的一个函数,但它什么也没做。Web 服务不返回任何内容。

我记得我之前遇到过类似的问题,解决它的方法是将一些 delphi dll 复制到我正在安装 Web 服务的服务器的 system32 文件夹中,但我不记得我需要复制哪些文件,如果那个实际上解决了问题。

使用 Web 服务不会在 .net 应用程序中引发任何异常。它只是没有做任何事情。这些函数什么都不返回。

有任何想法吗?

4

1 回答 1

1

问题如下。

我的 web 服务用于消费另一个人的 delphi web 服务。我必须开发这个 Web 服务,因为有一个 .NET 应用程序应该使用其他人的 delphi Web 服务,但是开发它的人使用了 .NET 不支持的复杂数据类型。所以我不得不开发我的网络服务来充当翻译。我在其中使用了 .NET 支持的数据类型,而 .NET 应用程序使用我的 delphi Web 服务只是为了使用其他人的 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 文件夹中的任何文件。这是我的烂摊子。

谢谢大家的帮助 ;)

于 2010-07-24T15:50:34.950 回答