关于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("要解密内容","密码") //解密

【相关文章】好搜一下
VS项目生成时如何自动复制文件包到指定目录

VS项目生成时如何自动复制文件包到指定目录

在使用VS2010等系列版本进行项目开发时,往往需要在项目生成时将.dll包、.…