Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在32位模式下运行VS 2010本地IIS_Asp.net_Asp.net Mvc 3_Iis 7.5 - Fatal编程技术网

Asp.net 如何在32位模式下运行VS 2010本地IIS

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))

我在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))

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选项卡?