我首先运行自动化服务器,如果我同时启动若干个Delphi5开发的客户端,这时可以看到每个客户端都是用我这个运行中的自动化服务器。
问题是:如果我换了用ASP调用的话,ASP用的不是我这个运行中的自动化服务器。应该是ASP自己暗地里启动的自动化服务器。为什么会这样???
是否可以令ASP都使用我这个运行中的自动化服务器???
13 个解决方案
#1
学习
#2
我的ASP代码是:
<html>
<body>
<%
Set AutoSrv = Server.CreateObject("AutoSrv.MyAutoSrv")
Response.write AutoSrv.Caption & " "
AutoSrv.Caption = "HEHE"
AutoSrv.SetColor(CLRed)
AutoSrv.SetEditText("HAHA")
Response.write AutoSrv.Caption & " "
%>
大家好!
</body>
</html>
结果每次运行,显示的都是“XXX: AutoSrv HEHE 大家好! ”。
我喜欢第一次运行ASP是这样。
以后运行都变成“XXX: HEHE HEHE 大家好! ”。
我应该怎么办?
<html>
<body>
<%
Set AutoSrv = Server.CreateObject("AutoSrv.MyAutoSrv")
Response.write AutoSrv.Caption & " "
AutoSrv.Caption = "HEHE"
AutoSrv.SetColor(CLRed)
AutoSrv.SetEditText("HAHA")
Response.write AutoSrv.Caption & " "
%>
大家好!
</body>
</html>
结果每次运行,显示的都是“XXX: AutoSrv HEHE 大家好! ”。
我喜欢第一次运行ASP是这样。
以后运行都变成“XXX: HEHE HEHE 大家好! ”。
我应该怎么办?
#3
学习,帮UP
#4
呵呵,UP!
#5
可能你的com没有关闭,试试 set AutoSrv=nothing
#6
这跟那个COM的实例模式和线程模式有关。
主要的是实例模式,一般缺省的是MultiInstance,这样是一个进程服务多个客户,是你需要的。
然后就注意线程模式,缺省是Apartment,这时你要想保持状态的话,可以使用全局变量。
主要的是实例模式,一般缺省的是MultiInstance,这样是一个进程服务多个客户,是你需要的。
然后就注意线程模式,缺省是Apartment,这时你要想保持状态的话,可以使用全局变量。
#7
我是用MultiInstance,问题是我的Edit1.text应该算是全局变量了吧?
而Delphi客户端就可以在同一个服务器上工作。就是ASP调用的时候,不用我这个服务器。
应该怎么设置才可以呢?
而Delphi客户端就可以在同一个服务器上工作。就是ASP调用的时候,不用我这个服务器。
应该怎么设置才可以呢?
#8
楼主可以跟踪调试一下程序的。。
应该很容易。
DELPHI启动这个EXE COM服务,设置断点。
应该很容易。
DELPHI启动这个EXE COM服务,设置断点。
#9
根本上跟踪调试不了。
ASP根本不调用我这个调试中的服务器。
ASP根本不调用我这个调试中的服务器。
#10
不会调试不了的。
可能是你编译和链接选项的时候没有加入调试信息。
可能是你编译和链接选项的时候没有加入调试信息。
#11
可以把COM包含在OCX里面嘛,这样ASP就很容易调用了,也不容易错.
#12
现在不是容易,还是错的问题啊!
现在是ASP不是用我运行中的实例,ASP自己暗地里起一个实例。
而我需要用运行中的实例来操作串口,ASP自己起的实例操作不了串口啊!
现在是ASP不是用我运行中的实例,ASP自己暗地里起一个实例。
而我需要用运行中的实例来操作串口,ASP自己起的实例操作不了串口啊!
#13
不知道你是怎么做的。。Edit1.text不能算是全局变量。。
另外,你可以在进程管理器里观察,ASP调用的时候,有没有另外启动一个这EXE的另一个进程。
如果没有,这时可以确定还是同一进程在服务。
只要是同一进程,就可以用变量来共享。
另外,你可以在进程管理器里观察,ASP调用的时候,有没有另外启动一个这EXE的另一个进程。
如果没有,这时可以确定还是同一进程在服务。
只要是同一进程,就可以用变量来共享。
#1
学习
#2
我的ASP代码是:
<html>
<body>
<%
Set AutoSrv = Server.CreateObject("AutoSrv.MyAutoSrv")
Response.write AutoSrv.Caption & " "
AutoSrv.Caption = "HEHE"
AutoSrv.SetColor(CLRed)
AutoSrv.SetEditText("HAHA")
Response.write AutoSrv.Caption & " "
%>
大家好!
</body>
</html>
结果每次运行,显示的都是“XXX: AutoSrv HEHE 大家好! ”。
我喜欢第一次运行ASP是这样。
以后运行都变成“XXX: HEHE HEHE 大家好! ”。
我应该怎么办?
<html>
<body>
<%
Set AutoSrv = Server.CreateObject("AutoSrv.MyAutoSrv")
Response.write AutoSrv.Caption & " "
AutoSrv.Caption = "HEHE"
AutoSrv.SetColor(CLRed)
AutoSrv.SetEditText("HAHA")
Response.write AutoSrv.Caption & " "
%>
大家好!
</body>
</html>
结果每次运行,显示的都是“XXX: AutoSrv HEHE 大家好! ”。
我喜欢第一次运行ASP是这样。
以后运行都变成“XXX: HEHE HEHE 大家好! ”。
我应该怎么办?
#3
学习,帮UP
#4
呵呵,UP!
#5
可能你的com没有关闭,试试 set AutoSrv=nothing
#6
这跟那个COM的实例模式和线程模式有关。
主要的是实例模式,一般缺省的是MultiInstance,这样是一个进程服务多个客户,是你需要的。
然后就注意线程模式,缺省是Apartment,这时你要想保持状态的话,可以使用全局变量。
主要的是实例模式,一般缺省的是MultiInstance,这样是一个进程服务多个客户,是你需要的。
然后就注意线程模式,缺省是Apartment,这时你要想保持状态的话,可以使用全局变量。
#7
我是用MultiInstance,问题是我的Edit1.text应该算是全局变量了吧?
而Delphi客户端就可以在同一个服务器上工作。就是ASP调用的时候,不用我这个服务器。
应该怎么设置才可以呢?
而Delphi客户端就可以在同一个服务器上工作。就是ASP调用的时候,不用我这个服务器。
应该怎么设置才可以呢?
#8
楼主可以跟踪调试一下程序的。。
应该很容易。
DELPHI启动这个EXE COM服务,设置断点。
应该很容易。
DELPHI启动这个EXE COM服务,设置断点。
#9
根本上跟踪调试不了。
ASP根本不调用我这个调试中的服务器。
ASP根本不调用我这个调试中的服务器。
#10
不会调试不了的。
可能是你编译和链接选项的时候没有加入调试信息。
可能是你编译和链接选项的时候没有加入调试信息。
#11
可以把COM包含在OCX里面嘛,这样ASP就很容易调用了,也不容易错.
#12
现在不是容易,还是错的问题啊!
现在是ASP不是用我运行中的实例,ASP自己暗地里起一个实例。
而我需要用运行中的实例来操作串口,ASP自己起的实例操作不了串口啊!
现在是ASP不是用我运行中的实例,ASP自己暗地里起一个实例。
而我需要用运行中的实例来操作串口,ASP自己起的实例操作不了串口啊!
#13
不知道你是怎么做的。。Edit1.text不能算是全局变量。。
另外,你可以在进程管理器里观察,ASP调用的时候,有没有另外启动一个这EXE的另一个进程。
如果没有,这时可以确定还是同一进程在服务。
只要是同一进程,就可以用变量来共享。
另外,你可以在进程管理器里观察,ASP调用的时候,有没有另外启动一个这EXE的另一个进程。
如果没有,这时可以确定还是同一进程在服务。
只要是同一进程,就可以用变量来共享。