关于ASP中调用.NET DLL的三种参考方案
来源:互联网 作者:好学IT学院整理
摘要:.NET的dll已经不是严格意义上的动态连接库了,而是一个类或者类库。我们可以通过COM包装器(COM callable wrapper (CCW))来将.net的dll再次包装,通过这个中间介质来实现相应的功能。…
【参考方案三】
相关步骤如下:
一 生成.net程序集:
首先你把http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=35935的代码复制。
然后你复制这个代码
using System; using System.IO; using System.Text; using System.Runtime.InteropServices; using System.Security.Cryptography; namespace Csic { //首先建立接口,这个是Com必须使用的 [Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")] public interface IEncrypt { string Encrypt(string pToEncrypt,string sKey); string Decrypt(string pToDecrypt,string sKey); } //写接口的实现 [Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")] public class Crypt : IEncrypt { public string Encrypt(string pToEncrypt,string sKey) { //复制FAQ加密代码 } public string Decrypt(string pToDecrypt,string sKey) { //复制FAQ解密代码 } } }
把上面的文件保存成vs.net项目的一个类库工程。
然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符
在命令行内打下
cd c:\ <回车>
sn -k myKey.snk<回车>
就在C盘根目录下生成一个名叫myKey.snk的强名称文件,然后关闭提示符窗口。
在vs.net的那个类库工程自动生成的AssemblyInfo.cs文件内把[assembly: AssemblyKeyFile("")] 改成 [assembly: AssemblyKeyFile(@"C:\myKey.snk")] 把[assembly: AssemblyVersion("1.0.*")] 改成 [assembly: AssemblyVersion("1.0.0.0")] //注意:这时你的Com组件版本为1.0.0.0版
然后按Shift + Ctrl + B键生成dll库(使用Release模式),假设是Csic.Crypt.dll。
这时候,程序集就建立成功了。
二、注册该程序集并创建一个类型库
仍然使用开始菜单中的Vistual Studio .Net命令提示符
进入你的项目目录,假设为D:\myProject\bin\Release
在对话框中输入
d:<回车> cd myproject\bin\release<回车> 然后输入 dir 命令可以看见Csic.Crypt.dll文件 然后输入:regasm /tlb Csic.Crypt.tlb Csic.Crypt.dll<回车> 然后就在这个目录下生成了Csic.Crypt.tlb类型库文件。不要关闭此提示符窗口。 这时候,这个.dll的.net程序集就变成一个标准的Com组件了,但是还不能用,必须让它变成全局Com组件。
这个regasm实用程序将创建一个类型库并在Windows 注册表中对其进行注册,以使PhysServer2.dll 中的类对COM客户端可用。
三、将程序集添加到全局程序集缓存中
进入提示符窗口,输入
gacutil /I Csic.Crypt.dll<回车>
这时,你的这个dll就被复制到全局程序集缓存中了。也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了。
四、使用方法
asp内的使用方法
set obj = Server.CreateObject("Csic.Crypt") dim str1 str1 = obj.Encrypt("要加密内容","密码") //加密 dim str2 str2 = obj.Decrypt("要解密内容","密码") //解密