困扰我的com问题,高分求解,在线等。

时间:2021-09-26 23:56:30
因为asp的md5和C#算出来的结果不一样,所以我按照

http://www.v6bbs.com/board/d19870.htm提示作了一个md5供asp使用的dll

在用regasm /tlb md5.tlb md5.dll的时候提示 

     RegAsm:error RA0000:无法定位输入程序集“md5.tlb”或它的一个依赖项。

在网上查找没有解决的方案,这是怎么回事啊!

在线等,今天结贴!

14 个解决方案

#1


没有人顶吗?很急啊!我自己顶

#2


不懂,帮顶

#3


然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll    
然后用如下工具    
regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb    
这个.tlb文件就是类型库,可以由vb6和vc++6引用。  

应该是上面这个没弄好了!

#4


去看看regasm指令的用法

#5


估计是相关dll.没有引用.好比我在一个解决方案生存了BookInformation.dll.但是BookInformation.dll又引用了BookBase.dll.如果在WebApplication里只添加BookInformation.dll而不添加BookBase.dll引用.就会出现上面的错误.md5的.net自带的类.你要在Net FrameWork.找到这个类所属的Dll.就好比asp.net那样放到你的bin目录下.我不懂asp,这个在Asp中应该是createObject

#6


GXY2005的方法倒是成功了,现在再往后面调。

#7


我所有的步骤都通过了,可是最后在asp调用

set obj= CreateObject("SecurityMD5.MD5")创建不成功

我的源码贴出来,可以帮我看看有什么问题吗?

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using System.Runtime.InteropServices;

namespace SecurityMD5
{
    // 首先建立接口,这个是Com必须使用的    
    [Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]
    public interface IEncrypt
    {
        string md5encrypt(string str);
    }
   [Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
    public class MD5 : IEncrypt
    {
       
        public string md5encrypt(string str)
        {
            
            byte[] secret = Encoding.Default.GetBytes(str);
            MD5CryptoServiceProvider md5secret = new MD5CryptoServiceProvider();
            byte[] result = md5secret.ComputeHash(secret);
            string secretcode = "";
            for (int i = 0; i < result.Length; i++)
                secretcode += result[i].ToString("x").PadLeft(2, '0');
            return secretcode;
        }

        
       //下面这一段不知道什么时候生成的

        #region IEncrypt 成员

        string IEncrypt.md5encrypt(string str)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion
    }
}

#8


没有人回答了吗?高手帮帮忙啊

#9


set o =createobject("STCOM.STDLLClass")
msgbox o.StdCall()
你先这个样子 调用一下,写个文本文件,把这个代码复制进去,把文件名称该成XXX.vbs
双击

#10


path D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin
PAUSE
sn -k keyfile.snk  
PAUSE
tlbexp STCOM.dll /out:STCOM.tlb 
PAUSE
D:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm /tlb:STCOM.tlb STCOM.dll  
PAUSE
gacutil -i STCOM.dll 
PAUSE

注册是这个样子

#11


步骤我都是这样的,最后调用的时候提示   
Server.CreateObject 失败 
实在不知道是什么问题,我的代码有问题吗?

asp创建对象时代码是set obj = server.CreateObject("SecurityMD5.MD5")
应该没问题吧

#12


希望能尽快解决,大家帮帮我

#13


try

[Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
[ProgId("SecurityMD5.MD5")]
public class MD5 : IEncrypt

#14


好像还是不行,我再试试吧!
如果不行再开贴请教

#1


没有人顶吗?很急啊!我自己顶

#2


不懂,帮顶

#3


然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll    
然后用如下工具    
regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb    
这个.tlb文件就是类型库,可以由vb6和vc++6引用。  

应该是上面这个没弄好了!

#4


去看看regasm指令的用法

#5


估计是相关dll.没有引用.好比我在一个解决方案生存了BookInformation.dll.但是BookInformation.dll又引用了BookBase.dll.如果在WebApplication里只添加BookInformation.dll而不添加BookBase.dll引用.就会出现上面的错误.md5的.net自带的类.你要在Net FrameWork.找到这个类所属的Dll.就好比asp.net那样放到你的bin目录下.我不懂asp,这个在Asp中应该是createObject

#6


GXY2005的方法倒是成功了,现在再往后面调。

#7


我所有的步骤都通过了,可是最后在asp调用

set obj= CreateObject("SecurityMD5.MD5")创建不成功

我的源码贴出来,可以帮我看看有什么问题吗?

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using System.Runtime.InteropServices;

namespace SecurityMD5
{
    // 首先建立接口,这个是Com必须使用的    
    [Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]
    public interface IEncrypt
    {
        string md5encrypt(string str);
    }
   [Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
    public class MD5 : IEncrypt
    {
       
        public string md5encrypt(string str)
        {
            
            byte[] secret = Encoding.Default.GetBytes(str);
            MD5CryptoServiceProvider md5secret = new MD5CryptoServiceProvider();
            byte[] result = md5secret.ComputeHash(secret);
            string secretcode = "";
            for (int i = 0; i < result.Length; i++)
                secretcode += result[i].ToString("x").PadLeft(2, '0');
            return secretcode;
        }

        
       //下面这一段不知道什么时候生成的

        #region IEncrypt 成员

        string IEncrypt.md5encrypt(string str)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion
    }
}

#8


没有人回答了吗?高手帮帮忙啊

#9


set o =createobject("STCOM.STDLLClass")
msgbox o.StdCall()
你先这个样子 调用一下,写个文本文件,把这个代码复制进去,把文件名称该成XXX.vbs
双击

#10


path D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin
PAUSE
sn -k keyfile.snk  
PAUSE
tlbexp STCOM.dll /out:STCOM.tlb 
PAUSE
D:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm /tlb:STCOM.tlb STCOM.dll  
PAUSE
gacutil -i STCOM.dll 
PAUSE

注册是这个样子

#11


步骤我都是这样的,最后调用的时候提示   
Server.CreateObject 失败 
实在不知道是什么问题,我的代码有问题吗?

asp创建对象时代码是set obj = server.CreateObject("SecurityMD5.MD5")
应该没问题吧

#12


希望能尽快解决,大家帮帮我

#13


try

[Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
[ProgId("SecurityMD5.MD5")]
public class MD5 : IEncrypt

#14


好像还是不行,我再试试吧!
如果不行再开贴请教