我曾经引用了一些32位,并在我的ASP.NET MVC 3项目的一些64位的DLL。
该项目的编译,但我得到的运行时错误。
这是因为我在运行Web项目为64位。
如何我在本地IIS“启用32位”(我只是如何在IIS 7.5专业版做)?
我使用.NET 4.0
我得到的错误是:
(从HRESULT异常:0x80040154的(REGDB_E_CLASSNOTREG))80040154未注册的类:检索COM类工厂具有CLSID部件{A6775dfd2-1dfF-421C-A187-4D55F4DDFBFF}失败,由于下面的错误。
如果你不需要64位组件(不知道什么是有运行,或者如果这可以被排除,因为你只是想知道如何在32位以上运行)
http://learn.iis.net/page.aspx/201/32-bit-mode-worker-processes/
您可以在服务器级别通过设置中:%windir%\ SYSTEM32 \ INETSRV \ appcmd设置配置-section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:真
或者设置特定的应用程序池(更推荐恕我直言),你可以尝试以下。 很抱歉,这来自于网页不再看似积极,只有网上搜寻缓存现在显示它:
迫使IIS创建一个32位的应用程序池工作进程
如果您的应用程序作为一个web应用程序,这意味着它是在IIS应用程序池的工作进程在运行,你要的是工人进程(W3wp.exe)是一个32位进程。 可以在应用程序池的高级设置中指定:
选择您的Web应用程序的应用程序池。 点击高级设置...下编辑应用程序池右侧。 更改启用(一般)32位应用程序为True的值。
请注意,“启用”的设置并不意味着“让”字,如“允许32位或64位应用程序。”这其实就是“力量”,如“强制工作进程在32位运行模式,使得32位应用程序的支持。”这意味着,应用程序池工作进程总是会推出为32位进程时,该设置的值为True。 其设置为false将推出一款64位的应用程序池的工作进程。
需要注意的是,当一个应用程序池工作进程启动时,它在任务管理器中的进程选项卡,w3wp.exe的上映像名称列显示出来。 当启用32位应用程序设置为True值,它会被列为w3wp.exe的* 32。
IIS 7.5快递(13759 Visual Studio 2010中,如果你安装它)只有32位:
http://learn.iis.net/page.aspx/1265/iis-75-express-readme/
报价:
32位和64位的系统都被支持, 但是仅IIS 7.5的32位版本快车存在。
所以,我无法想象,你的问题会涉及到你的所有DLL的是32位可能出现的通常的32位/ 64位池模式的问题。
但是,如果你试图加载64位COM DLL,那么这将失败; 64个二进制文件不能被加载到32位的处理,反之亦然。
另一种疑难杂症是忘记勾选Use IIS Express
选择与调试该Web服务器时复选框 :
如果不勾选该复选框,然后你会在版本IIS7的随Windows运行在DefaultWebSite子应用程序您的网站。
该DefaultWebSite运行在默认应用 ,这在Windows的64个版本上运行的64位进程。 所以,你需要更改默认应用到32位运行,如果你想使用它代替,消耗32位二进制文件。
你需要做到这一点使用IIS7的MMC管理单元或通过运行appcmd.exe
命令行工具。
你的编译目标设置为86,而不是AnyCPU或x64。 您的DLL将始终在32位没有你需要混乱与IIS服务器设置运行。