多层结构客户端无显示问题(100分)

  • 主题发起人 主题发起人 zyhml
  • 开始时间 开始时间
Z

zyhml

Unregistered / Unconfirmed
GUEST, unregistred user!
我刚开始学多层结构,按书上说明写了代码是remotedatamodule+cgi程序的,但是用浏览
器却不能显示内容。我的结构是这样的一台服务器nt4.0+web server(iis)+database
server(mssql),一台98的机器安装delphi5作为开发工作站及应用服务器,应用服务器采用
remotedatamodule,cgi程序用dcom+xmlbroker+xmlpageproducer,将编译好的程序放到服
务器的cgi-bin目录下,在98下用浏览器输入地址http://webserver/cgi-bin/cgi程序.exe
后发现能激活应用服务程序,但是浏览器中不能显示设置的表格。请问各位高手,如何解决
这个问题?解决问题后给分。

 
把应用服务器程序和客户端相关代码POST上来。
 
服务器程序
unit mainimp1;

interface

uses
Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
DBClient, countryserver1_TLB, StdVcl, Provider, DBTables, Db;

type
Tcountryobject = class(TRemoteDataModule, Icountryobject)
countrytable: TTable;
Session1: TSession;
countryProvider: TDataSetProvider;
private
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean;
const ClassID, ProgID: string);
override;
public
{ Public declarations }
end;

implementation

{$R *.DFM}

class procedure Tcountryobject.UpdateRegistry(Register: Boolean;
const ClassID, ProgID: string);
begin
if Register then
begin
inherited UpdateRegistry(Register, ClassID, ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID);
end else
begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID);
inherited UpdateRegistry(Register, ClassID, ProgID);
end;
end;

initialization
TComponentFactory.Create(ComServer, Tcountryobject,
Class_countryobject, ciMultiInstance, tmApartment);
end.


cgi程序
unit mainwebserver;

interface

uses
Windows, Messages, SysUtils, Classes, HTTPApp, CompProd, PagItems,
MidProd, XMLBrokr, Db, DBClient, MConnect, MidItems;

type
TWebModule1 = class(TWebModule)
DCOMConnection1: TDCOMConnection;
XMLBroker1: TXMLBroker;
MidasPageProducer1: TMidasPageProducer;
DataForm1: TDataForm;
FieldGroup1: TFieldGroup;
DataNavigator1: TDataNavigator;
private
{ Private declarations }
public
{ Public declarations }
end;

var
WebModule1: TWebModule1;

implementation

{$R *.DFM}

end.
 
不是这些吧!?
 
我又换了一种方式尝试,用一台98机器作为应用服务器,服务器端采用tremotedatamodule
,客户端采用dcom连接(另一98机器),且设置computername为应用服务器的地址。在服务
器上客户端可以成功获得数据,但将客户端移到另一台98机器上运行时,提示如下错误:
exception Eolesyserror in module client.exe at 0005AB11
服务器运行失败
将服务器的应用服务器手工打开,也同样出错
 
第二种方式已经解决,关键是作为应用服务器的98机器访问控制要设为用户级,第一种
方式还是不行,我另写了一个cgi程序不用三层结构,只是写一个数字,在浏览器中也不
能显示,看来是cgi程序或是iis有问题,我已经把delphi中的六个xml支持文件拷贝到cgi
程序的目录下,但是在浏览器中访问时,还是提示是下载还是运行,选运行后看到弹出
dos窗口运行一些东西,然后浏览器中出现一个图标。就什么都没有了。
 
估计是iis服务器的设置问题,我用的是4.0版,有谁能告诉我详细的配置吗?我设置目录
权限为执行(包括脚本)后,出现http 500错误。
 
又有新发现,我在开发的98下装了pws,将cgi程序拷到cgi目录下,浏览器同样报错http 500
错误,但是当我在delphi中将输出目录直接改为cgi目录时,问题解决了,cgi目录权限必须
为读取及执行。现在的问题是如何将cgi程序转到nt的iis中,难道在nt中装一个delphi,重新
输出一次,另外不知为何这个cgi程序可以修改、删除数据,却不能插入数据,apply update
后地址增加/xmlbroker,然后是页面无法显示,请高手讲解讲解。
 
算了,送分了,来得就给分!
 
我能把分收回吗?
 
斑竹不在吗?
 
这样好了,每人20分辛苦分,其他收回。
 
能保证XML没问题吗?
 
肯定,改成tcp/ip连接,一切ok
 
多人接受答案了。
 
后退
顶部