我在这个Active Sever Object仅仅定义了一个Method和公布了一个接口而已,以下是代码
----------------------------------------
unit uMts01;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, AspTlb, pMts01_TLB, StdVcl;
type
TMts01 = class(TASPMTSObject, IMts01)
protected
procedure Test; safecall;
function Get_P1: Integer; safecall;
end;
implementation
uses ComServ;
procedure TMts01.Test;
begin
Response.Write(' MTS');
end;
function TMts01.Get_P1: Integer;
begin
Result := 100;
end;
initialization
TAutoObjectFactory.Create(ComServer, TMts01, Class_Mts01,
ciMultiInstance, tmApartment);
end.
---------------------------------------
以下是在ASP里面调用这个Object的过程
<HTML>
<BODY>
<TITLE> Testing Delphi ASP </TITLE>
<CENTER>
<H3> You should see the results of your Delphi Active Server method below </H3>
</CENTER>
<HR>
<% Set DelphiASPObj = Server.CreateObject("pMts01.Mts01")
DelphiASPObj.Test
Response.Write(DelphiASPObj.P1 & "123")
%>
<HR>
</BODY>
</HTML>
---------------------------------------
假如我要是把这个MTS组件注册到‘组件服务’里面(就是在Delphi里面Install COM+ Object )
在上面的ASP里面,它就不会有任何输出,甚至我故意把公布的接口P1写成P2,或者把Method
Test写成随便什么东西,它都不会报错,但是试试证明,的确激活了这个MTS组件服务,真的很奇快!
如果我RegSrv32这个组件(就是在Delphi里面Resesiter ActiveX Server),而不注册到
‘组件服务’里面(就是不Install COM+ Object),就能在ASP里面正常运行,为什么啊???
神啊! 救救我把!