这两天把一个web程序发不到windows server 2003(64位)服务器,结果链接sap B1的di时出了错误提示
“检索 COM 类工厂中 CLSID 为 {632F4591-AA62-4219-8FB6-22BCF5F62007} 的组件是失败,原因是以下错误:80040154”
检索注册表,发现这个组件是 SAPbobsCOM.dll相关的(调试代码也是在调用这个的时候出的问题)
经过调查发现,64位的ASP.NET2.0不支持这个组件。那就只好改在32位的ASP.NET2.0下运行。由于
windows server2003的iis6默认是支持64位,而且32位和64位不能同时运行,所以需要如下设置
1. 单击"开始",单击"运行",键入 cmd,然后单击"确定"。
2. 键入以下命令启用 32 位模式:
cscript %SYSTEMDRIVE%/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
3. 键入以下命令,安装 ASP.NET 2.0(32 位)版本并在 IIS 根目录下安装脚本映射:
%SYSTEMROOT%/Microsoft.NET/Framework/v2.0.40607/aspnet_regiis.exe -i
4. 然后在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0.40607(32 位)的状态设置为允许。
在执行的时候,要将v2.0.40607改成你的服务器中对应的2.0的版本。我用的是v2.0.50727。
如果是要取消32位,还原为64位的话,按照以下操作
1. 单击"开始",单击"运行",键入 cmd,然后单击"确定"。
2. 键入以下命令禁用 32 位模式:
cscript %SYSTEMDRIVE%/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
3. 键入以下命令,安装 ASP.NET 2.0 版本并在 IIS 根目录下安装脚本映射:
%SYSTEMROOT%/Microsoft.NET/Framework64/ /aspnet_regiis.exe -i
4. 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0.40607 的状态设置为允许。
同样在执行的时候,要将v2.0.40607改成你的服务器中对应的2.0的版本。
微软官方来源:http://support.microsoft.com/kb/894435
经过了两天的调查,终于解决了问题,写下来,留着备用