如何在32位模式下运行VS 2010本地IIS(How to run VS 2010 Local I

2019-06-24 16:30发布

我曾经引用了一些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}失败,由于下面的错误。

Answer 1:

如果你不需要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。



Answer 2:

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命令行工具。



Answer 3:

你的编译目标设置为86,而不是AnyCPU或x64。 您的DLL将始终在32位没有你需要混乱与IIS服务器设置运行。



文章来源: How to run VS 2010 Local IIS in 32 bit mode