delphi - 在使用 IIS7 的 Delphi CGI 上无法看到 WSDL

标签 delphi iis soap iis-7 cgi

我创建了一个非常简单的 Delphi 2010 CGI Web 服务,并且能够在 Delphi 2007 上遇到完全相同的问题。

我的可调用界面如下所示:

ISimpleTest = interface(IInvokable)
['{4E318A9A-D361-4A18-A963-EE6D7F70E9C5}']
  function SayHello(const S: string; N: Integer): string; stdcall;
end;

该函数以类似简单的方式实现:

function TSimpleTest.SayHello(const S: string; N: Integer): string;
begin
  Result := 'Hello ' + S + ', all ' + IntToStr(N) + ' of you';
end;

我将生成的 SimplecGI.exe 复制到运行 IIS7 的 Windows Server 2008 服务器。我创建了虚拟文件夹,配置了执行权限,允许未指定的 CGI 模块,启用了 32 位应用程序,然后最终能够使用如下 URL 从我的浏览器查看服务信息页面:http://myserver:8001/SimpleCGI/SimpleCGI.exe

配置步骤与 IIS6 不同,但两个 IIS 版本上的服务信息页面看起来相同。它还具有 ISimpleTest 的 WSDL 链接,就像在 IIS6 上一样。但在 IIS6 上,单击此链接(类似于这样的 URL: http://myserver/SimpleCGI/SimpleCGI.exe/wsdl/ISimpleTest )会在浏览器中显示预期的 WSDL。但在 IIS7 中,单击同一链接只会再次显示服务信息页面。 IWSDLPublish 的 WSDL 链接和 WSIL 链接 ( http://myserver:8001/SimpleCGI/SimpleCGI.exe/inspection.wsil ) 也是如此。

有人见过这个吗?以前有人解决过吗?

最佳答案

好的,在这里找到答案:http://forums.iis.net/p/1100323/1745984.aspx

IIS7 上的默认安全设置从 CGI 应用程序的 URL 中删除路径信息。要规避它(并允许 Web 服务正常工作),请将以下内容添加到可执行文件所在文件夹中的 web.config 文件中:

<configuration>
  <system.webServer>
    <handlers>
      <add name="ScriptMap1" path="SimpleCGI.exe" verb="*" modules="CgiModule" scriptProcessor="E:\Mypath\SimpleCGI.exe" resourceType="File" allowPathInfo="true" />
    </handlers>
  </system.webServer>
</configuration>

关于delphi - 在使用 IIS7 的 Delphi CGI 上无法看到 WSDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1593556/

相关文章:

delphi - 在绘图项目中使用平板电脑

php - 在 IIS PHP 站点中获取随机 404 错误

javascript - 允许子域之间的跨站点请求而不更改第二个子域的文件内容

java - 使用 JMeter 测试异步 Web 服务

arrays - 在类中实现记录数组字段的属性读取和读写

windows - 是否有编程方式在 Windows 中获取短日期名称?

delphi - Delphi 是否存在无锁队列 "multiple producers-single consumer"?

c# - Microsoft.Build 和 Microsoft.Web.Administration nuget 包之间的冲突

php - "Object reference not set to an instance of an object"从 PHP 连接到 SOAP 服务器时出错

web-services - 如何在 SOAP UI 中修改 onRequestscript() 上的 xml