2

我一直在“网站项目”和“网络应用程序项目”之间遇到各种细微差别——这对我来说是最新的:

我继承了一个带有多个类库项目(DAL.dll、Biz.dll 等)的 Visual Studio 2005 解决方案,但这都是由网站项目而不是 Web 应用程序项目“正面”的。

虽然web 应用程序项目提供了一个平台目标下拉列表(任何 CPU、x86、x64),但糟糕的网站项目似乎没有提供类似的东西。当托管在 64 位 IIS 机器上时,有没有办法确保网站以 x86 方式运行?

..我为什么要问这个的更大的图景:

该网站在 64 位机器(Win Server 2003)上运行,并且[我刚刚了解到]无法加载我认为已使用 Runtime Callable Wrapper 包装的 32 位 COM 对象。因为它无法加载这一部分,所以设置了一个 web.config 设置,通过绕过这个 32 位 dll 的加载来避免运行时加载错误(但是当站点在 64 位上运行时,COM dll 的所有功能因此“丢失”位机)。

所以,总而言之,我假设 64 位机器上的网站必须在 IIS 中作为 64 位应用程序运行,如果我可以让网站以 32 位运行,那么它可以加载 COM dll 并因此执行该功能的应用程序。

注意:我已经并且仍然在这里进行研究,以准备在我访问实际开发环境时快速吸收,所以我的大部分问题都是基于将我即将面临的 [预期] 问题的部分拼凑起来的。谢谢。

4

2 回答 2

2

据我所知,在服务器 03 下,您不能在 IIS 中并排拥有 64 位和 32 位应用程序池。

您可以强制它以 32 位模式运行,但这会影响所有应用程序池,从而影响所有站点/应用程序。这听起来应该可以解决您的 COM 问题,但它可能会影响该盒子上运行的任何其他东西,因此请注意这一点。公平地说,从 64 位切换到 32 位影响事物的机会小于反之亦然。唯一想到必须在 64 位应用程序池中运行的常见事情是 Exchange 07。话虽如此,我是开发人员,而不是服务器管理员。

如果你确定,看这里

顺便说一句,服务器 08 可以同时摇动 64 位和 32 位应用程序池。

于 2009-12-10T18:59:52.563 回答
1

网站项目似乎没有 x86/x64 目标,只有 Any CPU 目标。因此,您必须通过控制应用程序池的位数来控制网站的位数。

在 Windows Server 2008 或 Windows 7 上,如果要创建 32 位 AppPool,请进入 IIS 管理器 > [服务器名称] > 应用程序池 > 高级设置。对于要作为 x86 进程运行的应用程序池,将“启用 32 位应用程序”设置为“真”。

请注意,您必须考虑其他 WOW64 考虑因素,例如,您的 Web 应用程序访问的注册表设置现在将使用 [HKLM\Software\Wow6432Node] 键而不是 [HKLM\Software] 键。

于 2010-05-14T23:15:37.610 回答