【问题标题】:Can't see WSDL on Delphi CGI with IIS7使用 IIS7 在 Delphi CGI 上看不到 WSDL
【发布时间】:2009-10-20 09:52:10
【问题描述】:

我创建了一个非常简单的 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) 也是如此。

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

【问题讨论】:

    标签: delphi iis soap iis-7 cgi


    【解决方案1】:

    好的,在这里找到答案: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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多