我已经使用 delphi 构建了一个非常简单的 Soap Web Server 服务,并且在运行 Windows 7 Professional 的本地计算机上安装了 IIS-7。
我将 Soap 可执行文件放在 inetpub/wwwroot/ 目录中。当我访问地址“http://localhost/SoapAttempt.exe“我的浏览器尝试下载该文件而不是运行它。
我想我需要在 IIS 中进行一些设置。我需要做什么才能让它运行而不是下载?
编辑:
我正在关注这个教程http://www.devarticles.com/c/a/Delphi-Kylix/Building-a-Web-Service-from-Scratch-with-Delphi/第三页指示编译可执行文件并将其放置在目录中。然后它指示从 Web 浏览器打开它,这样做之后,教程显示它显示一个页面,其中包含有关可用于构建客户端的 soap 服务器的信息,但我得到的只是下载 exe。所以我错过了某个步骤,因为设置不正确。
注意:教程说将可执行文件放在 wwwroot/cgi-bin 目录中,但我尝试了上述目录和此目录,结果相同。
答案1
CGI-exe 的处理程序映射已被禁用。
- 进入 IISManager(在开始栏中搜索 inetmgr)
- 在左侧框中选择最高级别
- 双击处理程序映射图标
- 右键单击禁用部分中名为 CGI-exe 的项目
- 单击“编辑功能权限”
- 确保选中“执行”
- 按“确定”退出该屏幕,Presto 问题解决
几乎...
我现在遇到了一个不同的问题,但我会把它放在这个答案的评论中
答案2
IIS 将托管 Web 服务。如果您的 Delphi 应用程序是一个独立的 Web 服务器,则无需将其放置在 IIS 中的虚拟目录中。相反,需要从服务器运行可执行文件,然后尝试通过浏览器导航到它。
如果您编写了 IIS 扩展/附加组件/插件,则需要研究它们是如何部署的。
更新
从您提供的链接:
将所有项目文件保存在一个目录中,包括接口和实现单元。然后在 Delphi IDE 中转到“项目”,然后选择“选项”,并将输出目录设置为“X:inetpubwwwrootcgi-bin”。“X”代表 Web 服务器根目录所在的驱动器名称。对于运行 IIS 的用户来说,cgi-bin 目录不会自动包含在 webroot 中,因此请创建它并赋予其执行权限。我们将输出目录设置为 cgi-bin 目录,因为每次更改应用程序时,我们不必将 exe 复制到 cgi-bin 目录。重新编译时,exe 将自动放置在该目录中。与大多数其他 Web 服务不同,我们的 Web 服务不需要 Internet 连接,但需要 Web 服务器。
重点是我——您是否在 IIS 下创建了该虚拟目录?您是否为该目录选择了“执行”权限?(创建虚拟目录后,右键单击选择属性,然后在下拉列表中找到“执行权限”字段)