ASP使用C#编写的COM+组件

        想把ASP系统里的一些数据库操作封装到DLL里,然而VB已不记得怎么用了,其他语言基本不会,因此选用C#。之前以为写个类文件然后编译成DLL就可以用regesvr32来导入了,到头来才发现原来不行。哎。。。对DLL的知识知之甚少,后来听说可以写成COM+组件,于是找了些这样的资料。接下来贴出对我帮助较大的一篇帖子,再记录下我在制作过程中碰到的问题

以下引用自:http://blog.csdn.net/eglic/archive/2006/03/16/626152.aspx

 一个实例过程:
--------------------------
1、启动VS.Net 2003,新建一个C# DLL项目,项目名称输入TestDll
2、在TestDll项目的Class1.cs里面输入以下代码:

using System;
using System.Runtime.InteropServices;

namespace TestDll
{
  [Guid("93FFB6A2-4B32-4546-B19F-C3D5DB22E57F")]
  public interface ISample{
    [DispId(0)] string About();
    [DispId(1)] int Add(int a,int b);
  }
  public class Sample : ISample{
    public Sample(){}
    public string About() {return "欢迎访问 http://www.eglic.com";}
    public int Add(int a, int b) {return a+b;}
  }

    

3、运行cmd命令,打开一个控制台窗口,进入TestDll工程的目录,进入 Obj/Debug目录
4、运行 sn -k TestDll.snk (sn.exe这个文件在 D:/Program files/Microsoft Visual Studio .NET 2003/SDK/v1.1/Bin)这样就生成了一个 TestDll.snk文件
5、在工程的解决方案资源管理器里面,双击AssemblyInfo.cs 修改 [assembly: AssemblyKeyFile("TestDll.snk")] (原来是 "" ,把文件名输入)
6、编译这个工程,生成 Bin/Debug/TestDll.dll,在控制台窗口进入这个目录
7、输入下面的命令:regasm /tlb:TestDll.tlb TestDll.dll 注册DLL,并生成一个tlb文件
tlb是给VB开发使用的,可以不要这个
8、继续在控制台里运行这个:gacutil /i TestDll.dll 把这个Dll加入全局Assembly Cache(实际上可以不要,在RegAsm里面已经自动加入了,为了保险,我还是操作一次)
9、在ASP里面引用这个,代码如下:
<%
  Dim o : Set o=Server.CreateObject("TestDll.Sample")
  Response.Write o.About() & "<br />"
  Dim a,b : a=123 : b=456
  Response.Write a & " + " & b & "=" & o.Add(a,b)
  Set o=Nothing
%>
页面输出为:
欢迎访问 http://www.eglic.com
123 + 456=579
----------------

 注意:
1、每个类名对应一个接口名,接口名是类名前加上一个大写的I,推荐这么做
2、尽量使用通用的数据类型
3、GUID生成的时候,选择注册表类型,然后要去掉前后的花括号
4、尽量不要使用多线程
5、如果编译为Release模式,上面所说的所有目录,都把Debug替换成Release
6、类必须有一个无参构造函数
----------------------转载内容截止-----------------------------
1、直接运行sn.exe是不行的,一定得在控制台窗口里,用cd命令先进入到该文件目录;
2、惭愧得很,一开始不知道怎么在控制台进入某个文件目录,后来才知道,进入盘符直接输入“D:”回车,然后是“cd 文件夹名”
3、regasm这个命令,按照刚才的方法是用不了的,即便进入了framework的目录,这个问题导致我郁闷了很久,后来在程序里看到了有一项visual studio 命令提示,打开,在那就输入regasm就可以了,呵呵
4、使用该命令时需要把生成的dll文件复制到SDK/v2./Bin文件夹下
5、gasutil这个命令,却又需要把dll复制到SDK/V2.0目录下,当然,也可以在命令里使用相对路径:gasutil /i Bin/TestDll.dll
6、很遗憾的是,这些步骤都完成了,我的ASP代码运行还是createobject失败。。。
希望各路高手指点迷津。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值