I’m running Classic ASP on Windows 2008 Server x64 in 64bit mode.
ADODB is running fine in 64bit with classic ASP. I have a problem with mine .NET COM DLL.
I have created a .NET COM DLL with such code as an sample:
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
}
}
}
The DLL is compiled for Any CPU. In ASP I create object and execute method:
Set test = Server.CreateObject("TestNamespace.TestClass")
test.TestMethod("test string")
Set test = Nothing
I’m registering DLL using RegAsm:
%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe /tlb /codebase TestNamespace.dll
On x86 platform the ASP and the DLL are running fine.
On Windows 2008 Server I’ve tried:
- Compile DLL for x64 and register using …\Framework64 \v2.0.50727\RegAsm.exe
- Compile for different platforms and placing in different locations including GAC
- many more
The errors (different situations):
- 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
The only way it worked on Windows 2008 Server x64, when ASP app pool was switched to 32bit mode. But I need it to work in 64bit!
I think the problem is not with permissions, because 32bit have worked.
Anyone have experience in classic ASP and .NET COM both running in 64bit?
Found, that everything is ok until System.Messaging is used in the method. A windows service, that consume messages, created and installed for x64 platform is working fine with System.Messaging. Probably it is a problem with 64bit asp.dll process.