我正在运行Windows 2008 Server x64上的Classic ASP,以64位模式运行。 ADODB在64位下与Classic ASP正常运行。但是我的.NET COM DLL出了问题。 我创建了一个.NET COM DLL,其中包含以下代码:
using System.Runtime.InteropServices;
namespace TestNamespace
{
[Guid("C446E97E-B415-4677-B99E-9644657FC98"),
ProgId("TestNamespace.TestClass"),
ComVisible(true)]
public class TestClass
{
[ComVisible(true)]
public void TestMethod(string s)
{
//some code that uses System.Messaging to send a message
}
}
}
这个DLL是为“任何CPU”编译的。在ASP中,我创建对象并执行方法:
Set test = Server.CreateObject("TestNamespace.TestClass")
test.TestMethod("test string")
Set test = Nothing
我正在使用RegAsm注册DLL:
%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe /tlb /codebase TestNamespace.dll
在x86平台上,ASP和DLL运行良好。在Windows 2008服务器上,我尝试了以下操作:
- 为x64编译DLL并使用...\Framework64\v2.0.50727\RegAsm.exe进行注册
- 为不同的平台编译并放置在不同的位置,包括GAC
- 还有更多的尝试
- Microsoft VBScript runtime error '800a01ad' Server.CreateObject Failed
- Server object error 'ASP 0177 : 80070002' Server.CreateObject Failed
- Server object error 'ASP 0177 : 800401f3' Server.CreateObject Failed
- Server object error 'ASP 0177 : 80131040' Server.CreateObject Failed