gpt4 book ai didi

web-services - Delphi native Web 服务应用程序无法运行。 IIS 7 似乎正在剥离路径信息

转载 作者:行者123 更新时间:2023-12-03 15:47:19 25 4
gpt4 key购买 nike

我遇到了一个在 XP 或 IIS 6 中从未遇到过的有趣问题。

基本上,我无法让 native Delphi (WebBroker) Web 服务服务器与 Windows 7 64 位中的 native Web 服务客户端一起使用。

这是最基本的分割。如果我在 Delphi 2010(或任何版本,回到 Delphi 7)中创建一个新的 Web 服务应用程序,并使用 IE 8 访问它,我可以看到 WSDLHTMLPublish 组件创建的 HTML,但我永远无法访问 SOAP。同样,WSDL Importer 也无法访问 SOAP。 (我将 IIS 7 配置为使用 32 位应用程序池,并且创建了到处理程序映射的工作脚本映射。简而言之,32 位 ISAPI Web 服务正在运行)。

例如,我有一个名为 TestService 的简单 Web 服务服务器(使用创建新 Web 服务服务器时生成的默认示例接口(interface)创建)。

我把它安装在一个名为scripts的虚拟目录中。

如果我输入http://localhost/scripts/TestService.dll/wsdl ,IIS 7 显示页面 http://localhost/scripts/TestService.dll .

如果我将鼠标放在 ITestService 的 WSDL 链接上,我会看到 http://localhost/scripts/TestService.dll/wsdl/ITestService在状态栏中。但是,当我单击此链接时,地址栏显示 http://localhost/scripts/TestService.dll/wsdl/ITestService ,但我只看到 http://localhost/scripts/TestService.dll 中的 HTML 。似乎没有办法获得 SOAP 定义。 IIS 7 似乎忽略了脚本名称后面的所有内容(它忽略了路径信息)。

IIS7 正在剥离路径信息的其他证据是,如果我将鼠标悬停在 ITestService 链接上,状态栏会显示 http://localhost/scripts/TestService.dll?intf=ITestService 。单击该链接会将我带到另一个 HTML 页面,即与 http://localhost/scripts/TestService.dll?intf=ITestService 关联的页面。 。但是,任何在脚本名称后面包含路径信息的链接都会将我简单地带到 http://localhost/scripts/TestService.dll .

我已经在 Delphi 7、Delphi 2010 和 Delphi XE 中对此进行了测试,结果相同。

我猜测 IIS7 正在剥离路径信息,因为即使是 WSDL 导入器也无法获取 SOAP 定义。

尝试使用 CGI 选项创建新的 Web 服务,并得到相同的结果。

知道发生了什么吗?

补充:Bob Swart 报告他在 Windows 7 32 位下没有遇到任何问题。下载 32 位操作系统并将尝试(在新的虚拟机中)。

最佳答案

问题是我在 ISAPI dll 的处理映射中创建了特定的脚本映射。这导致 IIS 将所有请求重定向到特定的 dll,这就是为什么包含信息路径部分的任何请求都被忽略的原因。信息路径被剥离。

我真正需要做的是简单地启用 ISAPI-dll 模块映射处理程序映射的执行功能权限。一旦您允许未指定的 ISAPI 模块(或 CGI 模块,如果这是您创建的 Web 服务器扩展类型),则此模块映射可用于虚拟目录。

为了解决我的问题,我需要

  1. 删除我弄乱了处理映射的目录。

  2. 由于我已经允许未指定的 ISAPI 模块(从服务器的 IIS 部分的 ISAPI 和 CGI​​ 限制小程序中选择编辑功能设置),因此我需要为相应的网站添加新的虚拟目录 (我在这里重新创建了在上一步 1 中删除的目录。

  3. 从虚拟目录的处理映射小程序中,您可能禁用了 ISAPI-dll 处理映射。选择它并选择右侧的编辑功能权限选项。启用“执行”复选框。

不要编辑 ISAPI-dll 处理映射并添加可执行文件。尽管此对话框显示可执行文件是可选的,但一旦添加了可执行文件,一切就结束了。你永远无法删除它(我永远无法删除它)。在我安装的一个虚拟机上,此对话框上有一个可执行条目。为了摆脱它,我不得不卸载 IIS 7,然后重新安装。 (也许这不是必需的,但我无法弄清楚如何在不输入可执行文件条目的情况下删除和重新安装模块映射)。

此外,如果您的 ISAPI DLL 是 32 位 DLL,并且您在 64 位操作系统中工作,则需要为关联的应用程序池启用 32 位应用程序。

我希望我的痛苦能帮助别人。

关于web-services - Delphi native Web 服务应用程序无法运行。 IIS 7 似乎正在剥离路径信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3811300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com