我在64位模式下在Windows 2008 Server x64上運行經典ASP。ADODB在64位版本上運行良好,採用了經典的ASP。我的.NET COM DLL有問題。 我已經創建了一個.NET COM DLL具有這種碼作爲示例:64位模式下的經典ASP和.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服務器我已經試過:
- 編譯DLL的x64和使用... \ Framework64 \ V2.0.50727 \ RegAsm.exe
- 編譯爲不同的平臺和不同放置註冊地點,包括GAC
- 更多
的錯誤(不同的情況):
- Microsoft VBScript運行時錯誤 '800a01ad' Server.CreateObject失敗
- 服務器對象錯誤ASP 0177:80070002 Server.CreateObject失敗
- 服務器對象錯誤ASP 0177:800401f3 Server.CreateObject失敗
- 服務器對象錯誤'ASP 0177:80131040'Server.CreateObject失敗
當ASP應用程序池切換到32位模式時,它在Windows 2008 Server x64上工作的唯一方法。但我需要它在64位工作! 我認爲問題不在於權限,因爲32位工作。
任何人都有經驗的ASP和.NET COM都在64位運行的經驗?
發現,一切正常,直到System.Messaging用於該方法。爲x64平臺創建並安裝的使用消息的Windows服務在System.Messaging中正常工作。 可能是64位asp.dll進程出現問題。 – 2009-08-18 09:50:58