Asp.net 如何在32位模式下运行VS 2010本地IIS
我在ASP.NET MVC 3项目中引用了一些32位和64位DLL 项目会编译,但我会遇到运行时错误 这是因为我以64位运行web项目 如何在本地IIS中“启用32位”(如何在IIS 7.5 Pro中实现) 我正在使用.NET4.0 我得到的错误是:Asp.net 如何在32位模式下运行VS 2010本地IIS,asp.net,asp.net-mvc-3,iis-7.5,Asp.net,Asp.net Mvc 3,Iis 7.5,我在ASP.NET MVC 3项目中引用了一些32位和64位DLL 项目会编译,但我会遇到运行时错误 这是因为我以64位运行web项目 如何在本地IIS中“启用32位”(如何在IIS 7.5 Pro中实现) 我正在使用.NET4.0 我得到的错误是: 由于以下错误,检索CLSID为{A6775dfd2-1dfF-421C-A187-4D55F4DDFBFF}的组件的COM类工厂失败:80040154类未注册(HRESULT中的异常:0x80040154(REGDB_E_CLASSNOTREG))
由于以下错误,检索CLSID为{A6775dfd2-1dfF-421C-A187-4D55F4DDFBFF}的组件的COM类工厂失败:80040154类未注册(HRESULT中的异常:0x80040154(REGDB_E_CLASSNOTREG)) IIS Express 7.5(如果已安装,则由Visual Studio 2010使用)仅为32位: 引述: 支持32位和64位系统,但是只有32位版本的IIS 7.5 Express。 因此,我无法想象您的问题会与通常的32位/64位池模式相关,如果您的所有DLL都是32位的,则会出现这种问题 但是,如果您试图加载64位COM DLL,则此操作将失败;64个二进制文件不能加载到32位进程中,反之亦然 另一个问题是在选择要调试的web服务器时忘记勾选
使用IIS Express
复选框:
如果不勾选该复选框,则将在Windows附带的IIS7版本的DefaultWebSite中的子应用程序中运行站点
DefaultWebSite在DefaultAppPool中运行,在64位版本的Windows中,DefaultAppPool作为64位进程运行。因此,如果要使用32位二进制文件,则需要将DefaultAppPool更改为以32位运行
您需要使用IIS7的MMC管理单元或通过从命令行运行
appcmd.exe
工具来执行此操作。如果您不需要64位组件(不确定在那里运行的是什么,或者是否可以排除,因为您只想知道如何以32位以上的速度运行)
您可以通过以下方式在服务器级别进行设置:
%windir%\system32\inetsrv\appcmd set config-部分:applicationPools-applicationPoolDefaults.enable32BitAppOnWin64:true
或者设置您的特定应用程序池(更推荐imho),您可以尝试以下操作。很抱歉,该页面似乎不再处于活动状态,现在只有谷歌缓存显示该页面:
强制IIS创建32位应用程序池工作进程
如果您的应用程序作为web应用程序运行,则表示它正在
IIS应用程序池工作进程,您将需要该工作进程
(w3wp.exe)是一个32位进程。可以在
应用程序池的高级设置:
为您的web应用选择应用程序池。单击“高级设置…”下的
在右侧编辑应用程序池。更改启用32位的值
(一般)项下的申请为真
请注意,设置中的“启用”一词并非如中所示的“允许”
“允许32位或64位应用程序。”它实际上意味着“强制”
如“强制工作进程在32位模式下运行,以使32位
这意味着应用程序池工作程序
当执行此设置时,进程将始终作为32位进程启动
具有True的值。将其设置为False将启动64位应用程序
池工作进程
请注意,当启动应用程序池工作进程时,它会显示在
任务管理器中“进程”选项卡上的“图像名称”列显示为
w3wp.exe。启用32位应用程序设置的值为时
正确,它将被列为w3wp.exe*32
将编译目标设置为x86,而不是AnyCPU或x64。您的dll将始终以32位运行,而无需干扰IIS服务器设置。查看这是否有助于您:没有帮助。还有其他建议吗?有什么错误吗?这肯定是64位IIS的结果,而不是其他原因吗?检索组件的COM类工厂失败,原因是以下错误:80040154类未注册您推荐什么?它在x86 windows应用程序中工作,但在x64 asp.NET中不工作。您需要告诉我们有关这些COM DLL的更多信息,它们是如何构建的等。请将此添加到问题中。我想iv提到它是一个COM DLL,我使用regsvr32.exe注册了它。它在windows控制台应用程序中工作。我在web项目asp.net类型中引用了,但失败。尝试引用任何COM DLL,登记它,你会得到同样的问题,但你没有告诉我们,如果它是一个COM组件使用托管代码(C++,VB.NET等)或非托管代码(VB6,C++等)编写。有许多方法可以构建COM组件。此组件是32位还是64位?您是如何在Visual Studio中引用它的?添加引用->COM选项卡?