使用C#.net DLL Object的经典ASP不支持此属性或方法

时间:2014-06-20 14:44:11

标签: c# dll asp-classic com createobject

嘿所有这些是我第一次为经典的asp页面创建一个COM对象。

创建此COM DLL时我遵循的过程是:

1)使用强名称工具(sn.exe)并将.snk文件放在应用程序中。 (sn -k myKey.snk)

2)补充:

[assembly: AssemblyKeyFile(@"myKey.snk")]
[assembly: ComVisible(true)]

到AssemblyInfo.cs。我在KeyFile上得到了一个警告

  

使用命令行选项'/ keyfile'或相应的项目设置   而不是'AssemblyKeyFile'

3)从管理员处获得以下内容:SDK命令提示符:

tlbexp c:\\temp\\dll\\classicASPWSEnDecrypt.dll /out:c:\\temp\\dll\\classicASPWSEnDecrypt.tlb

regasm /tlb:c:\\temp\\dll\\classicASPWSEnDecrypt.tlb c:\\temp\\dll\\classicASPWSEnDecrypt.dll

gacutil /i c:\\temp\\dll\\classicASPWSEnDecrypt.dll

regasm c:\\temp\\dll\\classicASPWSEnDecrypt.dll /codebase

所有注册都没有错误。

在我的经典ASP页面中,我有:

<%
 Dim classicEnDecrypt
 Set classicEnDecrypt = Server.CreateObject("classicASPWSEnDecrypt.Class1")

 response.write(classicEnDecrypt.Encrypt("testing"))
%>

我发现 ProgID (使用OLEView)是Class1,如下所示: enter image description here

我的C#代码(只是一个剪辑)是这样的:

namespace classicASPWSEnDecrypt
{
  public class Class1
  {
      public string Encrypt(string PlainText)
      {
         [code here]
      }

      public string Decrypt(string EncryptedText)
      {
         [code here]
      }
  }
}

在我的本地计算机(IIS7 / Windows 7 Enterprise)上运行ASP页面后,出现此错误:

  

Microsoft VBScript运行时错误“800a01b6”

     

Object不支持此属性或方法:'Encrypt'

     

/contactupdateWS.asp,第49行

我不知道为什么当我知道我没有加密功能时呢?

我能错过什么?

1 个答案:

答案 0 :(得分:3)

我已在评论中提供了一些信息。

我也觉得你不应该有静态方法。似乎com不支持静态方法。

http://msdn.microsoft.com/en-us/library/ms182198.aspx

此外,您正在使用Server.CreateObject方法创建类的对象,因此很明显您应该有此实例方法。

public class Class1
  {
     public string Encrypt(string PlainText)
     {
     [code here]
     }

     public string Decrypt(string EncryptedText)
     {
     [code here]
     }
   }

希望得到这个帮助。