因为dll文件已驻留内存,可用intrabob进行调试,也可用PWS进行调试,不过要换文件。

  IntraBob是资深程序员Dr.Bob编写的免费工具软件,用于测试Delphi编写
的CGI/WinCGI/ISAPI程序,它可以代替PWS/IIS等WWW服务器软件,
调试本地的CGI/WinCGI/ISAPI程序,其原理是模拟PWS/IIS接受WWW请求,
并根据您的设置将类似于“http://www.123.com/testisapi.dll”
的远程URL映射到本地文件,如“d:\intrabob\demo\TestISAPI.dll”。
IntraBob目前的版本为5.0,支持调试Delphi3   -4   C/S、Delphi   5
  Pro/Enterprise、
C++Builder3-4   C/S中的WebModules,同时全面支持WebBroker技术和Delphi5
中的InternetExpress。

  可以从http://www2.drbob42.com/drbob42/intrabob.zip下载IntraBob5.0软件

演示文件,IntraBob.zip文件解压缩后有六个文件,各个文件用途如下:

  Debug.dll:ISAPI程序,用于演示IntraBob的调试功能。

  Debug.dpr:ISAPI程序,Debug.dll的源代码,用于演示IntraBob的调试功能。

  Drbob42.zip:Internet组件,CRC、CRC32、SMTP、   POP3、FTP。

  Home.htm:调用演示ISAPI程序Debug.dll的HTML   页面文件。它是IntraBob程序

动时调用的默认页面。

  Intrabob.exe:IntraBob程序,用来调试CGI/   WinCGI/ISAPI程序。

  Readme:IntraBob程序功能介绍及使用方法。

  下面以IntraBob5.0和Delphi3.0为例介绍用   IntraBob调试CGI/WinCGI/ISAPI
程序
的方法。我们将用Delphi3.0编写一个简单的ISAPI   程序来演示IntraBob的用法。
假设IntraBob5.0被解压缩到文件夹“d:\intrabob\”下,被调试的ISAPI位于文件夹
“d:\intrabob\demo\”下。

一、调用页面
  首先,我们需要一个页面,该页面用于调用要调试的   ISAPI程序并向其传递参
数,
它要求用户输入姓名、性别、省份,用户提交后将这三个参数给
http://www.123.com/testisapi.dll用于显示。
该页面存为   “D:\INTRABOB\demo\testisapi.htm”,其HTML代码如下:
<   HTML   >
<   HEAD   >
<   TITLE   > 用IntraBob调试ISAPI <   /TITLE   >
<   /HEAD   >
<   BODY   >
<   H2   > 用IntraBob调试ISAPI <   /H2   >
<   HR   >
<   FORM   ACTION=“http://www.123.com/
testisapi.dll "   METHOD=“POST "   >
<   br   > 姓名: <   INPUT   TYPE=“text "   NAME=“Name "
SIZE=“40 "   value=‘王发军 '   >
<   br   > 性别: <   INPUT   TYPE=“radio "
  NAME=“Sex "value=‘男 '   checked> 男
<   INPUT   TYPE=“radio "NAME=“Sex "   value=‘女 '   > 女
<   br   > 省份: <   Select   Name=Province   > <   Option   > 河南
<   /Option   > <   Option   > 河北 <   /Option   > <   /Select   >
<   br   > <   INPUT   TYPE=“SUBMIT "   VALUE=“提交测试ISAPI "   >
<   INPUT   TYPE=“RESET "   VALUE=“重新填写 "   >
<   /FORM   >
<   /BODY   >
<   /HTML   >
二、编写ISAPI程序
  然后,我们用Delphi3.0编写一个简单的ISAPI程序,接受姓名、性别、省份三个
参数并将其显示出来。
  (1)建立一个Web   Server   Application工程文件,选择“ISAPI/NSAPI   Dynamic
Link   Library”;

  (2)在WebModule1中增加一个WebActionItem1,在其OnAction事件中写下如下代
码:

procedure   TWebModule1.WebModule1WebActionItem1Action
(Sender:   TObject;Request:   TWebRequest;   Response:
TWebResponse;   var   Handled:   Boolean);
var
      Name,Sex,Province   :   string;
begin
      Name   :=   Request.ContentFields.values[‘name '];
          Sex   :=   Request.ContentFields.values[‘Sex '];
  Province   :=   Request.ContentFields.values[‘Province '];
      Response.Content   :=   ‘
您的输入如下: ';
    Response.Content   :=   Response.Content   +   ‘
姓名: '   +   name;
    Response.Content   :=   Response.Content   +   ‘
性别: '   +   sex;
    Response.Content   :=   Response.Content   +   ‘
省份: '   +   Province;
      Response.Content   :=   Response.Content   +   ‘ ';
end;

  (3)将程序存到文件夹“d:\intrabob\demo\”下,命名工程文件为
TestISAPI.dpr。

  (4)用Ctrl+F9编译确保无语法错误,并生成ISAPI   程序文件TestISAPI.DLL。

三、用IntraBob5.0调试ISAPI程序
  1.   设置ISAPI工程文件运行参数
  将IntraBob.exe设置为TestISAPI.dpr的Host   Application。在“Run”菜单下的

Parameters...”中,将Host   Application设置为   “D:\INTRABOB\Intrabob.exe”,
如下图所示:

  另外,用F5在程序中设置一个断点,用于演示   IntraBob的调试功能。

  2.开始ISAPI程序调试

  用F9开始运行程序TestISAPI.DLL,IntraBob.exe   将随之启动,并会调用其默认

面“D:\INTRABOB\HOME.HTM”,在IntraBob.exe调用的IE   控件的地址栏输入我们的
调试
页面地址“D:\INTRABOB\demo\testisapi.htm”,可显示页面,如下图所示:

  3.设置IntraBob选项,调试ISAPI程序

  为了用IntraBob调试ISAPI程序,还需要设置   IntraBob选项,主要是将远程URL

射到本地文件,也就是将   “http://www.123.com/testisapi.dll”的远程URL映射到
本地文件   “d:\intrabob\demo\TestISAPI.dll”。选择“Options”页,IntraBob
已经从显示的页面中提取出远程URL“http://www.123.com/testisapi.dll”,并填

“Remote   URL”栏,我们只需要将“Local   App”栏指定为
“d:\intrabob\demo\TestISAPI.dll”即可。然后回到   “Browser”页,在测试页面
中点击“提交测试ISAPI”按钮来提交已输入的数据。此后,Delphi   IDE的代码窗口
被激活,我们会看到程序已运行到刚才设置的断点处,我们就可以开始像调试普通应
用程序一样调试ISAPI程序了,剩下的就是Delphi程序调试技巧问题了。将ISAPI   运
行到结束,IntraBob将输出结果以“D:\INTRABOB\output.htm”的形式显示在
“Browser”   页中。由于IntraBob显示HTML页面时用的是微软提供的IE控件,我们可
以用鼠标右键来选择“后退”、   “刷新”、“查看源代码”等功能。

四、注意事项
  (1)如果在“Browser”窗口中刷新调试页面,IntraBob   选项将恢复为默认设
置,
此时可能需要在“Options”页中重新设置ISAPI的路径即重新设置“Local   App”的
值。
否则可能出现类似“TerminateExtension   crashed   in   testisapi.dll”   的错误。
  (2)IntraBob5.0不接受48K以上的提交数据。

  有了IntraBob这个工具软件,我们在本机上调试   CGI/WinCGI/ISAPI程序就不
必安装PWS或IIS了,同时也不用频繁启动和停止PWS/ⅡS、甚至重新启动计算机了。

  以上操作和程序在PWin98   +   Delphi3.0   C/S   +   IntraBob5.0   +   IE4.0及
PWinNT4.0
+   Delphi3.0   C/S   +   IntraBob5.0   +   IE5.0下测试通过。

Delphi调试CGI或ISAPI 转的更多相关文章

  1. 您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序

    您试图从目录中执行CGI.ISAPI 或其他可执行程序,但该目录不允许执行程序 本人使用WIN2003 INTERNET信息服务(IIS)管理器建立一个网站虚拟目录,结果浏览网页时出现错误,错误提示信 ...

  2. delphi调试需要管理员权限程序报错“Unable to create process:请求的操作需要提升”

    delphi调试启动需要UAC权限的程序的时候会报错“Unable to create process:请求的操作需要提升”.这是因为delphi没有以管理员身份启动,这样delphi createp ...

  3. [转帖]CGI与ISAPI的区别(转)

    CGI与ISAPI的区别(转) 不知道原始网站是哪个 博客园里面也是转帖的 https://www.cnblogs.com/eret9616/p/8515095.html 不过我还是不了解CGI和IS ...

  4. Delphi 调试WEBService程序(ISAPI或CGI) 把Web App Debugger executable转换成 ISAPI/NSAPI

      1.新建一个web工程,请选中最下面一项:Web App Debugger executable,Coclass name我们设为demo1: 2.在弹出的WebModule2中右击,在弹出的Ac ...

  5. Delphi Web Service和ISAPI的区别与联系 转

    Web Service和ISAPI的区别与联系   1.Web Service 是一种新的web应用程序分支,他们是自包含.自描述.模块化的应用,可以发布.定位.通过web调用.Web Service ...

  6. CGI和ISAPI

    1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座桥,把网页和WEB服务器 ...

  7. Delphi 调试日子 - TLogger

    这段时间又开始用delphi了,才发现我对它这么的不熟悉! 简单的而有效的调试工具 Logger 这个是“榕树下”的作品,小巧而精悍.稍微调整了一下.在需要的地方加入 {$IFDEF DEBUG}   ...

  8. CGI/FASTCGI/ISAPI区别

    一 CGI原理及其性能 1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座 ...

  9. 问题-delphi 调试(F8)错行处理

    在delphi 7中(其他版本也可能碰到该问题),编译后,代码左边显示蓝色小点,表示哪句代 码是被编译了的,可今天我的一些代码不能显示那些蓝点了,这样也就不能在上面设断点了,而且用F8跟踪发现执行的顺 ...

随机推荐

  1. Perl连接Sqlite数据库

    Sqlite是一个小巧的嵌入式关系型数据库,几乎可以嵌入所有编程语言,特别是C,C++,PHP,Perl等.这里就介绍如何用Perl连接并操作Sqlite数据库. use DBI; # perl用以操 ...

  2. This 在 C# 中的含义

    这涉及到c# 中的oo思想,其实不管在c# 或其他编码语言中,很多抽象的概念当你项目经验多了,自然而然就会对这些东西理解的更透彻点,更加具象. 这里有一些面向对象编程的概念需要说明:类(Class)的 ...

  3. java中的递归方法

    一.含义 递归算法是一种直接或间接地调用自身的算法.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 二.例子 99乘法表的例子 1:普通实现99乘法表太 ...

  4. java开发规范总结_代码编码规范

    规范需要平时编码过程中注意,是一个慢慢养成的好习惯 1.基本原则 强制性原则:     1.字符串的拼加操作,必须使用StringBuilder:     2.try…catch的用法 try{ }c ...

  5. windows下安装wamp和wordpress

    安装wamp WAMP是一个windows上的php开发集成环境,一键安装php,apache和mysql,非常方便. 双击wampserver2.2exxxxxxxxxx.exe文件进行安装,安装过 ...

  6. Tomcat源码学习记录--web服务器初步认识

    Tomcat作为开源的轻量级WEB服务器,虽然不是很适合某些大型项目,但是它开源,读其源代码可以很好的提高我们的编程功底和设计思维.Tomcat中用到了很多比较好的设计模式,其中代码风格也很值得我们去 ...

  7. iOS 获取URL中的参数

    - (NSString *)getParamByName:(NSString *)name URLString:(NSString *)url { NSError *error; NSString * ...

  8. java中的包装类

    每一个包装类都对应一种基本数据类型.包装类有:Integer.character.Byte.Short.Long.Floot.Double.Boolean这八种,分别对应的基本数据类型是:int.ch ...

  9. UVA 10817 Headmaster's Headache(DP +状态压缩)

    Headmaster's Headache he headmaster of Spring Field School is considering employing some new teacher ...

  10. 自定义QToolButton

    最近做界面需要添加很多工具栏按钮,所以自己定义了一个Button 直接上代码 SettingButton.cpp//设置Button的一些参数 #include "SettingButton ...