我在Visual Studios 2010中创建了一个dll。我已经执行了以下步骤:
-
给定通过将密钥对(snk文件)关联到来构建强名称
-
给每个类一个单独的ProgID和GUID
-
由于它是一个64位DLL,我确保使用了位于"FrameWork64/v4xxxx"文件夹中的RegAsm.exe。我使用了RegAsm.exe/codebase ECE2.dll
-
我在DLL 上运行了"gautil-I"
所有这些步骤都取得了成功。DLL和我正在使用它的ASP页面存储在intelpub/wwwroot中。
现在,DLL在我的笔记本电脑和家用电脑上运行良好(均运行Windows7 Ultimate)。我现在正试图让它在Windows Server 2008 R2上运行。这就是我的问题所在。
我完成了与上面相同的步骤,所有这些都是成功的。然而,当我运行ASP页面时,我收到一条错误消息,表明它还没有注册,尽管它有:
Microsoft VBScript运行时错误"800a01ad"ActiveX组件不能创建对象:"ECE2.CSV_DataSet"
我想可能是IIS中的一个设置需要更改。注意,这个服务器已经配置为允许经典ASP页面,所以我知道它不是那样的。有人能告诉我,我是否需要在服务器中更改特定的设置,或者我是否需要跳过额外的安全障碍才能在Server 2008上运行,而我在Windows 7 Ultimate上不需要这样做吗?
检查此ASP应用程序运行的应用程序池的高级设置。它是否将"启用32位应用程序"设置为True。如果是这样,那么这就是你的问题——你不能在32位池下实例化一个64位dll。
你认为这是一个"64位dll"而不是简单的"任何CPU"有什么原因吗?如果没有regasm,它也可以用作32位dll。
否则,您将需要在没有"启用32位应用程序"的情况下运行此ASP应用程序,使其以64位运行,但这可能是最初设置的原因。因此,下一步是创建一个没有此设置的新应用程序池,并使ASP的一部分在此池中作为单独的应用程序运行。