ASP调用C#编写的DLL组件问题
我用C#编写了一个sql的数据库通用访问类(未使用强名称),编译生成了相应的dll文件,
现在的问题是:
1.如何正确注册才能在ASP页面里面调用该dll呢?
2.如何卸载已经注册的该dll文件?(因为修改了以后还要注册,好像不能覆盖的)
3.我在类里面定义的有 DataSet,SqlDataReader和DataTable 三种类型的返回记录集,
那么我在ASP里面改如何取得该记录集的数据呢? 难道是把记录集返回给一个普通的变量,
还是返回给一个已经定义好的 RecordSet 的变量呢?
网上介绍了很多方法,但是注册都不成功,这里想请教一个完整的办法和步骤。
目前我使用的注册办法是 regasm D:\SqlHelper.dll /tlb:D:\SqlHelper.tlb /CodeBase 但是注册失败。
如上,请教大家!! 谢谢先。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 回复次数:24
falconshh
(向前进...向前进...穿上小)
等 级:
#1楼 得分:0回复于:2008-06-04 11:14:33我想手动注册 :-)
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:Tcp p2p 点对点 穿透 战败!
zyug
(.........)
等 级:
#2楼 得分:10回复于:2008-06-04 11:19:00UP
我看过相关的文章,但是没有实际操作过.,网上有相关示例,
1,2如果你的dll是一个com组件,那么asp就能搞,
3 如果是com组件,那么可以和他暴露出来的属性,方法一样用
ds.tables(0).什么什么
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:没有问题,散分贴:如果你必须开发交互式页面,ViewState越大可能意味着越有本事
zyug
(.........)
等 级:
#3楼 得分:0回复于:2008-06-04 11:19:38问题其实是转变成用c#如何开发com组件
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:小问MVC模式
lihongdian
(有一种伤感叫喜悦.)
等 级:
#4楼 得分:30回复于:2008-06-04 11:21:29呵呵,,C#的DLL不称之为注册.因为C#编译的程序集是完全自我描述的单元.所以不需要事先告诉系统,可以直接调用.
将DLL 引用到项目中就可以了.
如果需要部署到CGA,就必须要签强名称才行..部署方法也很简单,直接打开C盘windows文件夹找到assembly文件夹,把你写好的DLL拖进去就可以了.强名称在使用的时候更安全,更不会出现冲突和错误.
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:数据库类的扩展:数据库的建立和表的建立
yeness
(请输入你的社区昵称)
等 级:
#5楼 得分:8回复于:2008-06-04 11:21:30需要snk注册到.net framework ,这方面很多。
不过c#注册确实是别具一格,一般的com都是注册到注册表里,.net注册到framework
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:[攒分贴]用c#读取并分析sql2005日志
falconshh
(向前进...向前进...穿上小)
等 级:
#6楼 得分:0回复于:2008-06-04 12:35:27我就是用C#编写的一个类啊 编译过后生成了一个dll文件(在bin目录下面),我现在就是想在asp程序里面调用这个dll,具体的该如何做呢,操作步骤是? 我这个组件是com组件么?
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#7楼 得分:0回复于:2008-06-04 12:37:25引用 4 楼 lihongdian 的回复:
呵呵,,C#的DLL不称之为注册.因为C#编译的程序集是完全自我描述的单元.所以不需要事先告诉系统,可以直接调用.
将DLL 引用到项目中就可以了.
如果需要部署到CGA,就必须要签强名称才行..部署方法也很简单,直接打开C盘windows文件夹找到assembly文件夹,把你写好的DLL拖进去就可以了.强名称在使用的时候更安全,更不会出现冲突和错误.
如何才能签强名称呢,拖到assembly文件夹下面,就可以直接使用了么?(在asp页面里面调用,在asp页面里面是否需要其他什么设置呢)
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
lihongdian
(有一种伤感叫喜悦.)
等 级:
#8楼 得分:0回复于:2008-06-04 14:07:20网上有专门的文章介绍强名程序集签的办法,还有如何引用程序集的办法.
随便一搜就有.
http://msdn2.microsoft.com/zh-cn/library/ms235305(vs.80,d=toc).aspx
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#9楼 得分:0回复于:2008-06-04 19:48:03我的开发环境是VC++2005 ,我想知道详细的注册步骤。。。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
zwb521
(初出茅庐)
等 级:
#10楼 得分:2回复于:2008-06-04 21:38:59mark
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#11楼 得分:0回复于:2008-06-05 11:28:49我的c#类的内容节选如下:
程序集里面加了如下的强签名: [assembly: AssemblyKeyFileAttribute("SqlHelper.snk")]
程序集里面修改了ComVisible 为true: [assembly: ComVisible(true)]
编译并生成相应的dll文件,SqlHelper.dll
另外手动生成了SqlHelper.dll文件对应的tlb文件,命令如下: tlbexp SqlHelper.dll /out: SqlHelper.tlb
最后注册dll文件,命令是:(在.net命令行)RegAsm SqlHelper.dll /tlb:SqlHelper.tlb /codebase
系统给的提示信息是:SqlHelper.tlb 库被正常登录,并没有关于dll文件被成功注册的信息。
调用代码是:
VBScript code
set conn = Server.CreateObject("SqlHelper.DataAccess")
。。。。
该行报错,提示找不到服务器对象。
请大家帮我分析一下。。。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#12楼 得分:0回复于:2008-06-05 11:39:44另外网上看到说 类里面必须有和类对应的接口,我没写接口,难道是这个原因? 不确信。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#13楼 得分:0回复于:2008-06-05 14:10:08up一下 ,看有人做过没
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
sunking_426
(织诗_恒)
等 级:
#14楼 得分:10回复于:2008-06-06 23:23:43ASP调用.Net编写的动态库:
http://www.haoyu63.com/article.asp?id=133
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
menu_880
(单身一族)
等 级:
#15楼 得分:0回复于:2008-06-07 08:38:55
该回复于2008-06-07 18:01:33被版主删除
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
zmhdgut
(没有你不行)
等 级:
#16楼 得分:2回复于:2008-06-07 11:35:50留名学习
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
ghostbear
(rose)
等 级:
#17楼 得分:2回复于:2008-06-11 18:47:31帮顶,我遇到了与楼主类似的问题!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
jinliangliu
(Knate)
等 级:
#18楼 得分:2回复于:2008-06-12 17:42:26留名關注一下.
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
cxr5201314
(天天混CSDN,,不学好都难~)
等 级:
#19楼 得分:2回复于:2008-06-12 18:36:13
UP 学习一下
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
cxr5201314
(天天混CSDN,,不学好都难~)
等 级:
#20楼 得分:0回复于:2008-06-12 18:47:28
注册 不是用这个?regsvr32
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
fengyuyan
(风雨岩)
等 级:
#21楼 得分:10回复于:2008-06-13 08:35:48看看这个能不能帮得上忙。
http://siatom.spaces.live.com/blog/cns!4131942A83EE8648!153.entry
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
46539492
(男儿当自强)
等 级:
#22楼 得分:10回复于:2008-06-13 08:42:35在你需要调用这个类的层处:“引用”--》“添加引用”--》“浏览”--》选择你的dll类--》确定--》ok
我用的数据库操作类也是封装起来的,像上面那样做就可以直接使用。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
ltb55232133
(长沙服装cs.crlp.cc)
等 级:
#23楼 得分:2回复于:2008-06-13 09:12:32学习一下
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
akunshenjk
(阿坤)
等 级:
#24楼 得分:10回复于:2008-06-13 09:58:36我曾经做过类似的事情:http://www.shenjk.com/CateContent.asp?CID=12&ID=184
现在的问题是:
1.如何正确注册才能在ASP页面里面调用该dll呢?
2.如何卸载已经注册的该dll文件?(因为修改了以后还要注册,好像不能覆盖的)
3.我在类里面定义的有 DataSet,SqlDataReader和DataTable 三种类型的返回记录集,
那么我在ASP里面改如何取得该记录集的数据呢? 难道是把记录集返回给一个普通的变量,
还是返回给一个已经定义好的 RecordSet 的变量呢?
网上介绍了很多方法,但是注册都不成功,这里想请教一个完整的办法和步骤。
目前我使用的注册办法是 regasm D:\SqlHelper.dll /tlb:D:\SqlHelper.tlb /CodeBase 但是注册失败。
如上,请教大家!! 谢谢先。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 回复次数:24
falconshh
(向前进...向前进...穿上小)
等 级:
#1楼 得分:0回复于:2008-06-04 11:14:33我想手动注册 :-)
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:Tcp p2p 点对点 穿透 战败!
zyug
(.........)
等 级:
#2楼 得分:10回复于:2008-06-04 11:19:00UP
我看过相关的文章,但是没有实际操作过.,网上有相关示例,
1,2如果你的dll是一个com组件,那么asp就能搞,
3 如果是com组件,那么可以和他暴露出来的属性,方法一样用
ds.tables(0).什么什么
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:没有问题,散分贴:如果你必须开发交互式页面,ViewState越大可能意味着越有本事
zyug
(.........)
等 级:
#3楼 得分:0回复于:2008-06-04 11:19:38问题其实是转变成用c#如何开发com组件
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:小问MVC模式
lihongdian
(有一种伤感叫喜悦.)
等 级:
#4楼 得分:30回复于:2008-06-04 11:21:29呵呵,,C#的DLL不称之为注册.因为C#编译的程序集是完全自我描述的单元.所以不需要事先告诉系统,可以直接调用.
将DLL 引用到项目中就可以了.
如果需要部署到CGA,就必须要签强名称才行..部署方法也很简单,直接打开C盘windows文件夹找到assembly文件夹,把你写好的DLL拖进去就可以了.强名称在使用的时候更安全,更不会出现冲突和错误.
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:数据库类的扩展:数据库的建立和表的建立
yeness
(请输入你的社区昵称)
等 级:
#5楼 得分:8回复于:2008-06-04 11:21:30需要snk注册到.net framework ,这方面很多。
不过c#注册确实是别具一格,一般的com都是注册到注册表里,.net注册到framework
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:[攒分贴]用c#读取并分析sql2005日志
falconshh
(向前进...向前进...穿上小)
等 级:
#6楼 得分:0回复于:2008-06-04 12:35:27我就是用C#编写的一个类啊 编译过后生成了一个dll文件(在bin目录下面),我现在就是想在asp程序里面调用这个dll,具体的该如何做呢,操作步骤是? 我这个组件是com组件么?
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#7楼 得分:0回复于:2008-06-04 12:37:25引用 4 楼 lihongdian 的回复:
呵呵,,C#的DLL不称之为注册.因为C#编译的程序集是完全自我描述的单元.所以不需要事先告诉系统,可以直接调用.
将DLL 引用到项目中就可以了.
如果需要部署到CGA,就必须要签强名称才行..部署方法也很简单,直接打开C盘windows文件夹找到assembly文件夹,把你写好的DLL拖进去就可以了.强名称在使用的时候更安全,更不会出现冲突和错误.
如何才能签强名称呢,拖到assembly文件夹下面,就可以直接使用了么?(在asp页面里面调用,在asp页面里面是否需要其他什么设置呢)
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
lihongdian
(有一种伤感叫喜悦.)
等 级:
#8楼 得分:0回复于:2008-06-04 14:07:20网上有专门的文章介绍强名程序集签的办法,还有如何引用程序集的办法.
随便一搜就有.
http://msdn2.microsoft.com/zh-cn/library/ms235305(vs.80,d=toc).aspx
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#9楼 得分:0回复于:2008-06-04 19:48:03我的开发环境是VC++2005 ,我想知道详细的注册步骤。。。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
zwb521
(初出茅庐)
等 级:
#10楼 得分:2回复于:2008-06-04 21:38:59mark
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#11楼 得分:0回复于:2008-06-05 11:28:49我的c#类的内容节选如下:
+展开
-C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.EnterpriseServices;
/// <summary>
/// DataAccess 的摘要说明。
/// <description>数据处理基类,调用方式:DataAccess.DataSet((string)sqlstr);或者 DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description>
/// </summary>
public class DataAccess:ServicedComponent
{
#region 属性
protected static SqlConnection conn = new SqlConnection();
protected static SqlCommand comm = new SqlCommand();
#endregion
public DataAccess()
{
//init();
}
#region 内部函数 静态方法中不会执行DataAccess()构造函数
/// <summary>
/// 打开数据库连接
/// </summary>
private static void openConnection()
{
if (conn.State == ConnectionState.Closed)
{
string strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = d:\\ASP\\db1.mdb";// &Server.MapPath(db);
conn.ConnectionString = strConn;
// conn.ConnectionString = SysConfig.ConnectionString;
comm.Connection = conn;
try
{
conn.Open();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}
}
using System.Data;
using System.Data.SqlClient;
using System.EnterpriseServices;
/// <summary>
/// DataAccess 的摘要说明。
/// <description>数据处理基类,调用方式:DataAccess.DataSet((string)sqlstr);或者 DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description>
/// </summary>
public class DataAccess:ServicedComponent
{
#region 属性
protected static SqlConnection conn = new SqlConnection();
protected static SqlCommand comm = new SqlCommand();
#endregion
public DataAccess()
{
//init();
}
#region 内部函数 静态方法中不会执行DataAccess()构造函数
/// <summary>
/// 打开数据库连接
/// </summary>
private static void openConnection()
{
if (conn.State == ConnectionState.Closed)
{
string strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = d:\\ASP\\db1.mdb";// &Server.MapPath(db);
conn.ConnectionString = strConn;
// conn.ConnectionString = SysConfig.ConnectionString;
comm.Connection = conn;
try
{
conn.Open();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}
}
程序集里面加了如下的强签名: [assembly: AssemblyKeyFileAttribute("SqlHelper.snk")]
程序集里面修改了ComVisible 为true: [assembly: ComVisible(true)]
编译并生成相应的dll文件,SqlHelper.dll
另外手动生成了SqlHelper.dll文件对应的tlb文件,命令如下: tlbexp SqlHelper.dll /out: SqlHelper.tlb
最后注册dll文件,命令是:(在.net命令行)RegAsm SqlHelper.dll /tlb:SqlHelper.tlb /codebase
系统给的提示信息是:SqlHelper.tlb 库被正常登录,并没有关于dll文件被成功注册的信息。
调用代码是:
VBScript code
set conn = Server.CreateObject("SqlHelper.DataAccess")
。。。。
该行报错,提示找不到服务器对象。
请大家帮我分析一下。。。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#12楼 得分:0回复于:2008-06-05 11:39:44另外网上看到说 类里面必须有和类对应的接口,我没写接口,难道是这个原因? 不确信。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
falconshh
(向前进...向前进...穿上小)
等 级:
#13楼 得分:0回复于:2008-06-05 14:10:08up一下 ,看有人做过没
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
sunking_426
(织诗_恒)
等 级:
#14楼 得分:10回复于:2008-06-06 23:23:43ASP调用.Net编写的动态库:
http://www.haoyu63.com/article.asp?id=133
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
menu_880
(单身一族)
等 级:
#15楼 得分:0回复于:2008-06-07 08:38:55
该回复于2008-06-07 18:01:33被版主删除
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
zmhdgut
(没有你不行)
等 级:
#16楼 得分:2回复于:2008-06-07 11:35:50留名学习
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
ghostbear
(rose)
等 级:
#17楼 得分:2回复于:2008-06-11 18:47:31帮顶,我遇到了与楼主类似的问题!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
jinliangliu
(Knate)
等 级:
#18楼 得分:2回复于:2008-06-12 17:42:26留名關注一下.
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
cxr5201314
(天天混CSDN,,不学好都难~)
等 级:
#19楼 得分:2回复于:2008-06-12 18:36:13
UP 学习一下
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
cxr5201314
(天天混CSDN,,不学好都难~)
等 级:
#20楼 得分:0回复于:2008-06-12 18:47:28
注册 不是用这个?regsvr32
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
fengyuyan
(风雨岩)
等 级:
#21楼 得分:10回复于:2008-06-13 08:35:48看看这个能不能帮得上忙。
http://siatom.spaces.live.com/blog/cns!4131942A83EE8648!153.entry
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
46539492
(男儿当自强)
等 级:
#22楼 得分:10回复于:2008-06-13 08:42:35在你需要调用这个类的层处:“引用”--》“添加引用”--》“浏览”--》选择你的dll类--》确定--》ok
我用的数据库操作类也是封装起来的,像上面那样做就可以直接使用。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
ltb55232133
(长沙服装cs.crlp.cc)
等 级:
#23楼 得分:2回复于:2008-06-13 09:12:32学习一下
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP
akunshenjk
(阿坤)
等 级:
#24楼 得分:10回复于:2008-06-13 09:58:36我曾经做过类似的事情:http://www.shenjk.com/CateContent.asp?CID=12&ID=184
加支付宝好友偷能量挖...