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#类的内容节选如下:
+展开
-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);
                }
            }
        }
}





程序集里面加了如下的强签名: [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)网络
阅读(98)喜欢(0)Asp.Net/C#/WCF