我在Visual Studios 2010中创建了一个dll。我执行了以下步骤:
通过将密钥对(snk文件)与其关联来构建强名称
给每个班级一个单独的ProgID和GUID
由于它是64位DLL,我确保使用位于' FrameWork64 / v4xxxx'中的RegAsm.exe。夹。我使用了RegAsm.exe / codebase ECE2.dll
我跑了' gacutil -i'关于DLL
所有这些步骤都取得了成功。我正在使用的DLL和ASP页面存储在intetpub / wwwroot中。
现在,我的笔记本电脑和家用电脑上的DLL 正常运行(两者都运行Windows 7旗舰版)。我现在正试图让它在 Windows Server 2008 R2 上运行。 这就是我遇到问题的地方。
我完成了与上面相同的步骤,所有这些都是成功的。但是,当我运行ASP页面时,我收到一条错误消息,表明它尚未注册,即使它有:
Microsoft VBScript运行时错误' 800a01ad' ActiveX组件不能 创建对象:' ECE2.CSV_DataSet'
我认为它可能是IIS中需要更改的设置。请注意,此服务器已配置为允许经典ASP页面,所以我知道不是这样。 任何人都可以告诉我是否有一个特定的设置我需要在服务器中更改,或者是否有额外的安全箍我必须跳过才能让它在Server 2008上工作我不需要做在Windows 7旗舰版上?
答案 0 :(得分:9)
检查此ASP应用程序运行的应用程序池的高级设置。是否将“启用32位应用程序”设置为True。如果是这样那么你的问题就是你无法在32位池下实例化64位dll。
你有没有理由认为这是一个“64位dll”而不是简单的“任何CPU”?如果没有regasm它也可以用作32位dll。
否则,您将需要在没有“启用32位应用程序”的情况下运行此ASP应用程序,以便它以64位运行,但之后可能有一个原因设置在第一位。因此,下一步是创建一个没有此设置的新应用程序池,并将ASP的一部分作为此池中的单独应用程序运行。