嘿,这是我第一次为经典的 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”
对象不支持此属性或方法:“加密”
/contactupdateWS.asp,第 49 行
不太清楚为什么当我知道我有加密功能时它说我没有加密功能?!
我会错过什么?