2

こんにちは、クラシック ASP ページの COM オブジェクトを作成するのはこれが初めてです。

この COM DLL を作成するときに従ったプロセスは次のとおりです。

1) 厳密な名前ツール (sn.exe) を使用し、アプリ内に .snk ファイルを配置しました。(sn -k myKey.snk)

2) 追加:

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

AssemblyInfo.cs に。KeyFile で次のような警告が表示されます。

「AssemblyKeyFile」の代わりに、コマンド ライン オプション「/keyfile」または適切なプロジェクト設定を使用してください

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'

オブジェクトはこのプロパティまたはメソッドをサポートしていません:「暗号化」

/contactupdateWS.asp、49 行目

暗号化機能があるとわかっているのに、暗号化機能がないと言われる理由がよくわかりません!

何が欠けている可能性がありますか?

4

1 に答える 1

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]
     }
   }

この助けを願っています。

于 2014-06-20T15:14:57.153 に答える