ASP调用VB写的DLL的时候无法释放内存问题,十万火急,请大家高抬贵手,帮帮忙!!!谢谢~~~

CTBOK 2002-12-09 02:59:55
这是我VB的内容:
Private MyScriptingContext As ScriptingContext
Private MyApplication As Application
Private MyRequest As Request
Private MyResponse As Response
Private MyServer As Server
Private MySession As Session

Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
Set MyScriptingContext = PassedScriptingContext
Set MyApplication = MyScriptingContext.Application
Set MyRequest = MyScriptingContext.Request
Set MyResponse = MyScriptingContext.Response
Set MyServer = MyScriptingContext.Server
Set MySession = MyScriptingContext.Session
End Sub


Public Sub OnEndPage()
Set MyScriptingContext = Nothing
Set MyApplication = Nothing
Set MyRequest = Nothing
Set MyResponse = Nothing
Set MyServer = Nothing
Set MySession = Nothing
End Sub

Public Sub test()
MyResponse.Write "Hello World"
End Sub



这是ASP的内容:(test.asp)
Set objwuliu = Server.CreateObject("wuliu.testclass")
objwuliu.test
set objwuliu = nothing

-----------------------------------------------------------------------
当我运行一次test.asp的时候,能输出hello world这个字符,证明VB写的程序没问题,但我想把hello world改成hello all,也就是我想更改VB中DLL的内容的时候,当我选“生成DLL”那个选项的时候,系统提示“无操作权限”,而我在资源管理器想把这个DLL删除的时候,WINDOW提示说这个文件正在被调用,无法删除。
请问我应该怎样办?我已经用regsvr32 /u反注册了的,下面是我详细的工作步骤:

1、写vb程序,生成xxx.ddl
2、regsvr32 xxx.dll
3、在asp中obj = server.creatobject("xxx.类名")
4、set obj = nothing
5、regsvr32 /u xxx.dll
6、停止IIS服务
7、重新启动IIS服务
8、重新写VB程序
9、生成DLL
跟着就出错了,无法复盖以前的DLL,也无法删除,除非重新启动,我应该怎办?


-----------------------------------------------------------------
另外,我又写了一个数据库连接程序,是用户登陆的,代码如下:
Dim Theyh As String
Dim Themima As String
Dim CpmmectionString As String
Dim DBConnection As ADODB.Connection
Dim Rs As New ADODB.Recordset
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MyServer.MapPath("data/sys.mdb")
DBConnection.Open ConnectionString ******************
Theyh = MyRequest("yh")
Themima = MyRequest("mima")

.........(省略若地字)

Rs.Close
DBConnection.Close
Set Rs = Nothing
Set DBConnection = Nothing


系统执行到DBConnection.Open ConnectionString这句,就是打着“******”这句,IIS就报错了,说是“未设置对象变量或 With block 变量”,请问是什么呢?
我已经引用了ActiveX Data Objects 2.5 Library这个东东了,就是无法通过那一句,请问又是为什么?MyServer.MapPath("")这句有内容的,我用MyResponse.Write看过,路径正确,我真的百思不得其解,请大家高抬贵手帮帮忙,谢谢!!
...全文
85 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yonghengdizhen 2003-03-05
  • 打赏
  • 举报
回复
或者站点设置隔离级别为独立的..

造成上述原因是因为iis的对象池化在作怪..
yonghengdizhen 2003-03-05
  • 打赏
  • 举报
回复
net stop iisadmin /y
编译..
重启iis

建议去msdn找找,csdn文档中心应该也有相关问题,这是个老话题了
phf 2003-03-05
  • 打赏
  • 举报
回复
问题解决了吗?我现在也碰到啊。帮帮忙
online 2002-12-10
  • 打赏
  • 举报
回复
我一般使用这样的方法
vb每次编译dll后,放在不同的目录下,然后注册这个目录下的dll
这样asp会自动找到最新的dll

www.ourfly.com文档有着方面的资料
ddboy 2002-12-10
  • 打赏
  • 举报
回复
不过最好直接用VB在浏览器中调试,方便,快速
rouser 2002-12-10
  • 打赏
  • 举报
回复
去服务里停了IIS服务,然后结束掉相关进程,试试,应该可以覆盖了
kmyyf 2002-12-10
  • 打赏
  • 举报
回复
如果你是直接通过regsvr32或在vb中编译dll的方式注册dll的话,在你运行了asp页面之后,如果想对dll进行修改就必须首先在组件服务中关闭IIS Out-of-process Pooled Applications 组件包。
gzh_seagull 2002-12-10
  • 打赏
  • 举报
回复
1.有引用此COM组件的进程先杀掉
2.打开的project如果引用了此COM组件,先关掉
3.asp等网页使用此COM,在组件服务中停止IIS相关COM应用
4.停掉此COM组件的应用
dczlxl 2002-12-10
  • 打赏
  • 举报
回复
不可能有其他方法,仅有一种重新启动计算机!!!
CTBOK 2002-12-10
  • 打赏
  • 举报
回复
up
CTBOK 2002-12-10
  • 打赏
  • 举报
回复
全部的方法都不行...
CTBOK 2002-12-09
  • 打赏
  • 举报
回复
注册表是清了,但问题是内存中的DLLHOST无法清除,在重新启动之前,就算在VB里修改了源程序,仍然无法再编译,因为DLLHOST已经将这个DLL载入内存...除非重新启动
我就是想知道,如何在不重新启动的情况下,将这个DLL从内存中清除...
czp98069806 2002-12-09
  • 打赏
  • 举报
回复
在注册表里清出
CTBOK 2002-12-09
  • 打赏
  • 举报
回复
activex dll
另外,我查了一下以前的帖子,里面有相似的情况
我把安全级别定为“高”的时候,出现一个错误提示,说:
“COM + 无法与 Microsoft 分布式事务协调程序交谈”,那是为什么?
我按“御载”这个按钮,DLLHOST仍然无法清出内存,大家请帮帮忙,谢谢
yukeelau_1020 2002-12-09
  • 打赏
  • 举报
回复
请问你是创建的什么类型的DLL?
gucs 2002-12-09
  • 打赏
  • 举报
回复
gz
CTBOK 2002-12-09
  • 打赏
  • 举报
回复
我打开数据库的时候用
Set DBConnection = MyServer.CreateObject("ADODB.Connection")
Set Rs = MyServer.CreateObject("ADODB.Recordset")
这样打开就能用,怪啊

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧