我用C#编写了一个sql的数据库通用访问类(未使用强名称),编译生成了相应的dll文件,现在的问题是:1.如何正确注册才能在ASP页面里面调用该dll呢?
2.如何卸载已经注册的该dll文件?(因为修改了以后还要注册,好像不能覆盖的)
3.我在类里面定义的有 DataSet,SqlDataReader和DataTable 三种类型的返回记录集,
   那么我在ASP里面改如何取得该记录集的数据呢? 难道是把记录集返回给一个普通的变量,
   还是返回给一个已经定义好的 RecordSet 的变量呢?网上介绍了很多方法,但是注册都不成功,这里想请教一个完整的办法和步骤。目前我使用的注册办法是 regasm D:\SqlHelper.dll /tlb:D:\SqlHelper.tlb /CodeBase 但是注册失败。如上,请教大家!! 谢谢先。

解决方案 »

  1.   

    UP
    我看过相关的文章,但是没有实际操作过.,网上有相关示例,1,2如果你的dll是一个com组件,那么asp就能搞,3 如果是com组件,那么可以和他暴露出来的属性,方法一样用
    ds.tables(0).什么什么
      

  2.   

    问题其实是转变成用c#如何开发com组件
      

  3.   

    呵呵,,C#的DLL不称之为注册.因为C#编译的程序集是完全自我描述的单元.所以不需要事先告诉系统,可以直接调用.
    将DLL 引用到项目中就可以了.
    如果需要部署到CGA,就必须要签强名称才行..部署方法也很简单,直接打开C盘windows文件夹找到assembly文件夹,把你写好的DLL拖进去就可以了.强名称在使用的时候更安全,更不会出现冲突和错误.
      

  4.   

    需要snk注册到.net framework ,这方面很多。
    不过c#注册确实是别具一格,一般的com都是注册到注册表里,.net注册到framework
      

  5.   

    我就是用C#编写的一个类啊 编译过后生成了一个dll文件(在bin目录下面),我现在就是想在asp程序里面调用这个dll,具体的该如何做呢,操作步骤是?  我这个组件是com组件么?
      

  6.   


    如何才能签强名称呢,拖到assembly文件夹下面,就可以直接使用了么?(在asp页面里面调用,在asp页面里面是否需要其他什么设置呢)
      

  7.   

    网上有专门的文章介绍强名程序集签的办法,还有如何引用程序集的办法.
    随便一搜就有.
    http://msdn2.microsoft.com/zh-cn/library/ms235305(vs.80,d=toc).aspx
      

  8.   

    我的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文件被成功注册的信息。调用代码是:set conn = Server.CreateObject("SqlHelper.DataAccess")
    。该行报错,提示找不到服务器对象。
    请大家帮我分析一下
      

  9.   

    ASP调用.Net编写的动态库:
    http://www.haoyu63.com/article.asp?id=133
      

  10.   


      注册 不是用这个?regsvr32
      

  11.   

    看看这个能不能帮得上忙。
    http://siatom.spaces.live.com/blog/cns!4131942A83EE8648!153.entry
      

  12.   

    在你需要调用这个类的层处:“引用”--》“添加引用”--》“浏览”--》选择你的dll类--》确定--》ok
    我用的数据库操作类也是封装起来的,像上面那样做就可以直接使用。
      

  13.   

    我曾经做过类似的事情:http://www.shenjk.com/CateContent.asp?CID=12&ID=184