web-services – Delphi本机Web Service应用程序无法正常工作. IIS 7似乎正在剥离pathinfo

我遇到了一个有趣的问题,我从未遇到过XP或IIS 6.

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

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

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

我将它安装在名为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似乎忽略了脚本名称之后的所有内容(它忽略了pathinfo).

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

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

我猜测IIS7正在剥离pathinfo,因为即使是WSDL Importer也无法获得SOAP定义.

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

知道发生了什么事吗?

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

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

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

要解决我的问题,我需要

>删除我搞砸了处理映射的目录.
>由于我已经允许未指定的ISAPI模块(从服务器的IIS部分选择ISAPI和CGI限制小程序中的编辑功能设置),然后我需要为相应的网站添加新的虚拟目录(这是我重新创建的地方)我在上一步中删除的目录.
>从虚拟目录的Handling Mappings小程序中,您可能已禁用ISAPI-dll处理映射.选择它并选择右侧的“编辑功能权限”选项.启用“执行”复选框.

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

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

我希望我的痛苦能帮到某个人.

转载注明原文:web-services – Delphi本机Web Service应用程序无法正常工作. IIS 7似乎正在剥离pathinfo - 代码日志