说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

asp调用dll组件出错!请指点。在线求解!

编辑:说三道四文库 发布时间:2018-06-24 07:31
HTML文档下载 WORD文档下载 PDF文档下载
我的dll组件打包后,安装完了不能用。在用asp程序调用的时候老是出现如下错误:

mylogin 错误 '800a005b' 

未设置对象变量或 With block 变量 

/action_login.asp,行10 

mylogin是一个控制登录的组件。
我是这样调用的。
dim loginobj
dim  vresponse
set loginobj=server.CreateObject("mylogin.login")
set vresponse=loginobj.checkpassword(Request.Item("username"),request.item("password"))
response.end///////代码在打包前以测试通过。
在注册表中查看mylogin组件已经注册了!
 
dim loginobj
dim  vresponse
set loginobj=server.CreateObject("mylogin.login")
vresponse=loginobj.checkpassword(Request.Item("username"),request.item("password"))
去掉set 这后变成空白页了。
不可能的,你的checkpassword这个方法在com中返回值是什么?

还有,你说第10行出错,是哪一行,是set vresponse=loginobj.checkpassword(Request.Item("username"),request.item  这一行么?
不可能的,你的checkpassword这个方法在com中返回值是什么?

还有,你说第10行出错,是哪一行,是set vresponse=loginobj.checkpassword(Request.Item("username"),request.item  这一行么?
把你的asp代码详细的贴出来
对,就是那一行,com 返回,用户密码正确返回error=fause.和一些登录人的参数。如果下在的代码。 不正确error=true.显示原因。
dim loginobj
     dim account
     dim  vresponse
    set loginobj=server.CreateObject("mylogin.login")
    
     
   vresponse=loginobj.checkpassword(Request.Item("username"),request.item("password"))
   Response.End 
  ' vresponse=loginobj.checkpassword(Request.Item("username"),request.item("password"))
 
  if vresponse("error")=true then
  Response.Redirect "error.asp"
   else
    session("loginid")=vresponse("account").item("login")
    session("name")=vresponse("account").item("name")
    session("popedom")=vresponse("account").Item("popedom")
    session("datapopedom")=vresponse("account").Item("datapopedom")
    session("depart")=vresponse("account").Item("depart")
    Session("islogin") = True
       Response.Redirect "correct.asp"
End If
可是打包前我的代码是经过测试的。
首先是确认一下你的com的checkpassword返回值,
一个是函数的返回值,另外一个是传出的参数
1,一般函数返回值之返回0(成功),-1(失败)
2,用传出的参数来把具体的值传出来
我看你上边代码的例子,好像函数的返回值是个记录集,又好像不是,还是什么其它的结构体之类的,而又没有传出的参数。可以肯定的是这跟你的com有关系


哦,对了,你的com使用什么编写的,vb,c++?不过这个关系不大,能把你的com代码贴出来一部分么?
我的那个组件没错。用过多少次了。而且这个asp程序也做了很长时间了。现在在别的机子上。如果在组件服务器里注册组件。就可以通过。
对不起,看来是我误解你了。
我的组件是用vb编写的。没错的。
就是用installshield developer 7打包之后。再调用组件就不能用了,我在is中高组件为self register了。也在注册表中找到了。可是就是在IE里打开的时候老是出那样的错误?
真是搞不懂呀@!
dll生成还用installshield?? 搞不懂,直接编译就行了
发布用,regsvr32,或者组件发布
试试下边代码,能测试一下你的组建是否发布成功?
dim loginobj
dim  vresponse
on error resume next

set loginobj=server.CreateObject("mylogin.login")
if loginobj=nothing
    response.write "Component register error!"
    response.end
end if
vresponse=loginobj.checkpassword(Request.Item("username"),request.item("password"))

其实我感觉你的组键应该是发布成功的,关键是你的checkpassword方法的返回值,包括类型,个数等等,出错信息也提示了“未设置对象变量或 With block 变量”,说明vresponse变量和checkpassword方法的返回值类型等不符;
其实的下边的这段代码我没看懂?我想问一下,怎么能这样使用呢?

vresponse("account").item("login") '不懂,为什么可以这么用?
我的Dll文件是已经生在成了的。我是做安装程序。将以前都能用的程序用installshield打包成安装文件。并且已经在注册表中显示已注册了!
谁知道打包完了组件就不能用了。
我试了一下你给的那个代码,显示说对象不支持nothing方法。
vresponse("account").item("login")
打错了,是loginid 登录号放入session :)
cleanduo谢谢你!
虽然问题没有解决。但是也要谢你。由于可用分太少,所以不能都给你。请原谅!
Request.Item是错的吧?
你的错误在组件内部。
把你的class贴出来我帮你解决。
是呀,应该是组件内部的错误。或是组件里的东西没有错,只是外面的调用方法不对,没有看到你的组件的CLASS的时候,是不知道你那个详细的错误是什么?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘