关于ASP中调用.NET DLL的三种参考方案
来源:互联网 作者:好学IT学院整理
摘要:.NET的dll已经不是严格意义上的动态连接库了,而是一个类或者类库。我们可以通过COM包装器(COM callable wrapper (CCW))来将.net的dll再次包装,通过这个中间介质来实现相应的功能。…
【参考方案一】
.NET的dll已经不是严格意义上的动态连接库了,而是一个类或者类库。它是不能直接在ASP、VB 等其它的应用环境中使用的。
我们可以通过COM包装器(COM callable wrapper (CCW))来将.net的dll再次包装,通过这个中间介质来实现相应的功能。
以下是一个小例子,供大家参考。
1. 在.net Visual Studio 中新建一个Class项目。
2. 在项目中新添加一个类,代码如下:
using System; namespace ClassLibrary1 { //定义接口,这点很重要 (此接口中的方法与COM组件中的方法一致) public interface iClass1 { string test(); } public class Class1 : iClass1 { private string t = ""; //实现接口中的方法 public string test() { return "hello,it.hxw.red.ok!"; } } }
3.在.NET命令行窗口中,创建密钥对。
可以用.net 自带的工具:sn.exe 来创建密钥对。如:SN –k testDll.Keys
4. 创建强命名程序集(Strong Name Assembly)
在AssemblyInfo.cs文件中,添加[assembly: AssemblyKeyFile(@"c:\test.keys")]属性
5. 编译整个项目,生成ClassLibrary1.dll (此DLL可在 \bin\Debug 路径下找到。)
6. 在.NET命令行窗口中,生成类型库
tlbexp ClassLibrary1.dll /out:ClassLibrary1.tlb
7. 在.NET命令行窗口中,注册装配件
regasm /tlb:ClassLibrary1.tlb ClassLibrary1.dll
8. 在.NET命令行窗口中,将.NET装配件安装到全局装配件缓存(GAC)中
gacutil /i ClassLibrary1.dll
9. 在asp中测试
<% SET s = CreateObject("ClassLibrary1.Class1") Response.Write(s.test()) %>
这样就能看到调用后的效果了。