server.createobject失败???????

fangge 2006-06-26 04:40:14
我做了个dll组件在asp页面里调用,
<html>
<head>
<title>测试ActiveX DLL</title>
</head>
<body>
<%
Dim testme
set testme=server.createobject("first.test")
testme.HelloWorld
set testme=nothing
%>
</body>
</html>
------------------------------------------------------
dll代码是:
Option Explicit
'对象的声明

Dim rp As Response

Dim rq As Request

Dim ap As Application

Dim sr As Server

Dim sn As Session


'当组件被创建的时候会触发这个事件

Public Sub OnStartPage()

Dim mysc As ScriptingContext

'进行对象的实例化

Set rp = mysc.Response

Set rq = mysc.Request

Set sr = mysc.Server

Set ap = mysc.Application

Set sn = mysc.Session

rp.Write "<br>ActiveX DLL组件已经被创建了!<br>"

End Sub

'当组件被销毁的时候触发这个事件

Public Sub OnEndPage()

rp.Write "<br>ActiveX DLL组件已经被销毁!<br>"

'销毁对象

Set rp = Nothing

Set rq = Nothing

Set sr = Nothing

Set ap = Nothing

Set sn = Nothing

End Sub

'定义我们自己的一个组件方法

Public Sub HelloWorld()

rp.Write "<H1>Hello,World!</H1>"

End Sub
------------------------------------------------------------------
编译dll成功,
然后在页面里调用
出现了server.createobject失败
请问高手怎么解决这个问题呢?
...全文
502 17 打赏 收藏 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeetoo 2006-07-03
  • 打赏
  • 举报
回复
因为你每次编译时没有停IIS, 致使dll文件其实并没有更新!

你的给分不合理, 一点都不合理.
fangge 2006-06-27
  • 打赏
  • 举报
回复
补充:

还有class的名称我该成了test
fangge 2006-06-27
  • 打赏
  • 举报
回复
谢谢yeetoo(一土)的解答!
在项目属性中,组件的工程名称我设为first,生成选项里应用程序的标题我设为first,
instancing - 5 multiuse(如果是默认的话编译出错。)

mtstransactionmode - 2 requirestransacton(这个我是想让他支持多线程)
其它设置我都没有改变,
编译成功后我把dll文件放在test文件夹下,运行不成功!
然后我又换了方法,把这个dll组件注册到COM+应该程序,按照liuxiaoyi666(MSMVP小猪妹马甲之八卦兔子)给我的提示操作,,运行还是没有成功,
郁闷了好久,大虾门,请问这是为什么?
addwing 2006-06-27
  • 打赏
  • 举报
回复
关注。帮顶
yeetoo 2006-06-27
  • 打赏
  • 举报
回复
如果是一台机器上开发, 那VB生成COM组件时就会自动注册.

问题可能出现的你的对象名不正确,跟dll的文件名是没有关系的.

项目属性中,是组件的名字,另外CLS(类)文件有一个属性,在那你能找到对象的名字,默认应该是Class1,估计你肯定会改变它的名字.

需要注意的是:
不要修改项目中关于线程方面的设置.除非你很了解它.
不能将生成的dll放在类似于像"我的文档"这样的目录里,不然权限问题会很麻烦的.

至于xiaoyao2006()给你的解释, 没有一点是正确的.他让你将dll和组件混为一谈了.
xiaoyao2006 2006-06-27
  • 打赏
  • 举报
回复
set testme=server.createobject("first.test")
first是DLL的文件名
TEST是窗体名!
注册了就行
fangge 2006-06-27
  • 打赏
  • 举报
回复
我按照大家给我的建议操作,在页面调用的时候还是出现了问题,创建不成功,不知道哪步出了问题,仔细检查了代码,应该说程序都没有问题,但是我对在vb里编译成dll不是很有信心(不过我想既然已经编译成功了,应该不会有什么问题,不知道这样想对不对?),还有在组件注册到服务器里的步骤不知道我还有没有操作上的遗漏,请哪位高人指点迷津,定当高分相谢!
我的QQ:562794175,请注明是:csdn网友。谢谢!
yeetoo 2006-06-27
  • 打赏
  • 举报
回复
建议在项目默认的选项中编译,如果编译不过去,检查你的程序,让它能编译过去.
fangge 2006-06-27
  • 打赏
  • 举报
回复
自己顶下
  • 打赏
  • 举报
回复
开始->程序->管理工具->组件服务->组件服务->计算机->我的电脑->COM+应该程序->右击新建->应用程序->下一步->创建一个空的应用程序->输入名称(随便)->选择服务器应用程序->下一步->选择此用户->输入有administrators组里的用户和密码->完成!

接下来,在应用程序下就有刚才建好的应用程序名称,在它的下一级,有一个组件,右击它,新建组件,把自己做好的已经注册的DLL导入进去就可以了!

最后,就是如何在ASP里引用了,其实和引用其它的DLL是一样的,set obj=server.CreateObject("") ,执行那个接口就可以了!
fangge 2006-06-26
  • 打赏
  • 举报
回复
谢谢,TSD(因为有你而精彩)的提醒,
我修改过以后编译成功,也注册了,运行的时候还是有错误,创建不成功,
不知道liuxiaoyi666(MSMVP小猪妹马甲之八卦兔子说的权限是怎么设置的?
cestar2005 2006-06-26
  • 打赏
  • 举报
回复
regsvr32 dll
fangge 2006-06-26
  • 打赏
  • 举报
回复
o .我试试看看,
TSD 2006-06-26
  • 打赏
  • 举报
回复
首先要先确认你的这个组件是否已注册,然扣在确定建立的对象名是否正确.

根据你上面建立的对象来说的话,

first是工程属性里设置的工程名.

test是类的名字(注意:不是类的文件名,eg:test.mod)
sy_binbin 2006-06-26
  • 打赏
  • 举报
回复
regsvr32 DLL名
  • 打赏
  • 举报
回复
一个是注册一个是权限
lion98 2006-06-26
  • 打赏
  • 举报
回复
DILL文件要注册的!!

28,402

社区成员

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

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