【问题标题】:How to set platform target for a ASP.NET "web site" project如何为 ASP.NET“网站”项目设置平台目标
【发布时间】:2009-12-10 18:43:01
【问题描述】:

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

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

虽然 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 并因此执行应用程序的该功能。

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

【问题讨论】:

    标签: visual-studio-2005 64-bit com-interop web-site-project web-application-project


    【解决方案1】:

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

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

    如果你确定,看here

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

    【讨论】:

    • 谢谢。自从发布这个问题以来,我已经了解了很多关于这个主题的知识。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      相关资源
      最近更新 更多