【问题标题】:Classic ASP using C# .net DLL Object doesn't support this property or method使用 C# .net DLL 对象的经典 ASP 不支持此属性或方法
【发布时间】:2014-08-11 08:51:16
【问题描述】:

这是我第一次为经典的 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,如下所示:

我的 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”

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

/contactupdateWS.asp,第 49 行

不太清楚为什么当我知道我有加密功能时它却说我没有加密功能?!

我可能会错过什么?

【问题讨论】:

标签: c# dll asp-classic com createobject


【解决方案1】:

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

我也觉得你不应该为此使用静态方法。 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]
     }
   }

希望对您有所帮助。

【讨论】:

  • 我已更新我的 OP 以显示我所做的更改。但是,我仍然遇到同样的错误。
  • 您取消注册第一个旧作业了吗?为了测试,我只是在 AssemblyInfo.cs 中使用 comvisible(true) 创建了类库并使用 regasm。但是,当我尝试添加新方法时,我必须使用 regasm 卸载并重新注册。如果仍有问题,请尝试更改程序集名称。
  • 你试过什么?让我知道。我仍然更喜欢完全采用新类库并对其进行测试。它肯定会奏效。
  • 知道了!谢谢您的帮助! :)
猜你喜欢
  • 2013-10-05
  • 1970-01-01
  • 2015-07-02
  • 2019-04-09
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多