zoukankan      html  css  js  c++  java
  • Delphi调试CGI或ISAPI 转

     

     
    因为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:intrabobdemoTestISAPI.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:intrabobdemo”下。

    一、调用页面
      首先,我们需要一个页面,该页面用于调用要调试的   ISAPI程序并向其传递参
    数,
    它要求用户输入姓名、性别、省份,用户提交后将这三个参数给
    http://www.123.com/testisapi.dll用于显示。
    该页面存为   “D:INTRABOBdemo estisapi.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:intrabobdemo”下,命名工程文件为
    TestISAPI.dpr。

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

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

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


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

      2.开始ISAPI程序调试

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

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


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

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

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

    “Remote   URL”栏,我们只需要将“Local   App”栏指定为
    “d:intrabobdemoTestISAPI.dll”即可。然后回到   “Browser”页,在测试页面
    中点击“提交测试ISAPI”按钮来提交已输入的数据。此后,Delphi   IDE的代码窗口
    被激活,我们会看到程序已运行到刚才设置的断点处,我们就可以开始像调试普通应
    用程序一样调试ISAPI程序了,剩下的就是Delphi程序调试技巧问题了。将ISAPI   运
    行到结束,IntraBob将输出结果以“D:INTRABOBoutput.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下测试通过。
  • 相关阅读:
    SentiAnalysis
    大数据索引技术 B+ tree vs LSM tree
    Regression, 回归问题
    Data Mining with R
    Why Vector Clock are Easy or Hard?
    How to know what an HRESULT code means?
    如何判断数据库表的某个列上有重复值的记录存在?
    关于SharePoint 2010里Servers in farm页面里status意义的澄清
    SharePoint Security系列 之二 CrossSite Request Forgery
    从MOSS2007升级到SharePoint2010后Report Server content types升级失败
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/3254627.html
Copyright © 2011-2022 走看看