在 IIS 底下,开一个虚拟目录,假设叫 test 来执行这个 CGI,则访问地址是:http://localhost/test/test.exe/login
这里的问题是,访问地址必须要有 text.exe,将这个程序的 exe 文件名暴露在外。
如果不想暴露 exe 文件名,类似 php 脚本那样,访问 1.php 则执行 php 的 CGI 程序去调用 1.php,也就是达到这样一种效果:http://localhost/text/1.dhtml 其实是执行力 test.exe 然后告诉 test.exe 去处理 1.dhtml 文件。
方法如下:
1. 同样是编译为 CGI;
2. 设置 IIS7 的:添加模块映射,在添加模块映射到窗口里面:
2.1. 请求路径:填写 *.dhtml
2.2. 模块:下拉选择 CgiModule
2.3. 可执行文件,选择这个 test.exe
2.4. 名称:随便填写一个名字。
这里,需要去 "ISAPI 和 CGI 限制" 里面,去添加一个对 test.exe 这个 CGI 的允许。
到此,IIS7 的设置结束。
-----------------------
如果访问:http://localhost/test/test.exe/1.dhtml 则因为 WebBroker 程序的处理路径里面,没有 1.dhtml,它会去执行默认处理路径(默认 Action)。在默认处理路径里面,我们可以自己写代码,判断用户是要访问哪个文件,则去调用相应的文件(比如 1.dhtml),甚至,用户访问了一个根本不存在的文件比如 3.dhtml,因为它的文件后缀是 dhtml 所以 IIS 也会丢给 test.exe 去执行。因此,test.exe 只需要在默认处理路径底下,判断用户输入的是哪个 dhtml 文件,剩下的就可以自己写代码来实现如何处理了,不一定非要有这个文件存在。这样,对 test.exe 的请求,就可以不用在 URL 里面出现 test.exe 了。
如果提交表单,地址也可以这样写:
<form action="http://localhost/test/5.dhtml" method="post">
<Input name="abcd" value="请输入" />
<input type="submit" value="提交" >
</form>
同样会提交到 WebBroker 的 test.exe 的默认处理路径底下去。
-------------------------
看起来,可以直接在 WebBroker 框架上,自己用 Delphi 代码,实现一个类似 php 的脚本框架或通用脚本解释器。或者,简化一点,可以用一些外部脚本比如 login.dhtml 这样的文件,让 WebBroker 的程序来处理后,输出给浏览器。这样就是一个简化版的特定专用的脚本解释器。