应当不行吧,此dll非windows标准dll

解决方案 »

  1.   

    在asp.net中可以用的,asp没用过,应该不行吧
      

  2.   

    可以用,把C#写的程序集注册成标准的Com组件,然后在asp中用Server.CreateObject()调用。
    一个例子:
    首先到这里看代码:
    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=35935
    里面有两个方法
    Encrypt(string pToEncrypt,string sKey) //加密
    Decrypt(string pToDecrypt,string sKey) //解密然后你这样写代码:
    using System;
    using System.Runtime.InteropServices;
    namespace 名称空间
    {
         // 首先建立接口,这个是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 类名称 : IEncrypt
         {
              public string Encrypt(string pToEncrypt,string sKey)
              {
                    // 复制FAQ加密代码
              }
           
              public string Decrypt(string pToDecrypt,string sKey)
              {
                    // 复制FAQ解密代码
              }
         }
    }然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll
    然后用如下工具
    regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb
    这个.tlb文件就是类型库,可以由vb6和vc++6引用。注意上面的guid是使用vs.net工具菜单里面的创建guid工具生成的。
    还要注意,vs.net自动生成的assemblyinfo.cs文件中必须添加强名称和版本号,因为Com组件需要版本号,不要改动版本号,也不要用vs.net自动的1.*这样的版本号,最好使用
    1.1.1.1这样的固定版本,而且必须一次添加,不能多次添加。
    步骤
    一 生成.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("要解密内容","密码") // 解密注意:上面的这样的字符串:CB52E990-185E-4448-A7E8-C88ECAD563AB
    是使用vs.net“工具”中“创建GUID”自动生成的。
      

  3.   

    见过 asp 隐藏代码吗?!