【问题标题】:IIS and application pools 32-bit vs 64-bitIIS 和应用程序池 32 位与 64 位
【发布时间】:2013-10-31 20:15:23
【问题描述】:

我有一个使用 Microsoft 访问数据库 (MDB) 在经典 ASP 中构建的网站。我将该站点设置为在 Windows 7 64 位机器上运行。当我将站点添加到 IIS 时,我选择了一个 .net 2.0 应用程序池。此池是使用经典管道设置的,并打开了 32 位应用程序支持。这很好用。

现在我正在向网站添加搜索功能。我正在利用 Windows 索引服务并使用 asp 查询目录。当我将搜索功能添加为新应用程序时,我告诉它使用 64 位应用程序池。无论出于何种原因,搜索功能似乎都没有正确使用指定的 64 位应用程序池。

如果我打开我为主站点指定的 32 位应用程序池并关闭对 32 位应用程序的支持,搜索工作但由于没有 64 位喷射驱动程序 (MDB) 访问查询失败。

如何让 IIS 对主站点和作为子目录添加到该站点的应用程序使用具有不同位数的不同应用程序池?

我考虑将 mbd 数据库转换为 accdb,因为 accdb 有 64 位驱动程序。目前,我不能这样做,因为我们当前的托管公司在 win2k 机器上运行该站点。我正在挑选一个新主机,并将让该站点在 win 2008/2012 服务器中运行。那时我可以升级数据库,但由于代码中有很多地方,这会变得很痛苦,并且可能需要一些时间,因为站点经常更改,并且在转换时我必须维护 2 个版本。

迈克

【问题讨论】:

    标签: iis asp-classic application-pool


    【解决方案1】:

    在子文件夹的 webconfig 中将inheritinchildapplications="false" 放入路径中

    <location path="." inheritInChildApplications="false">
    <system.web>
    

    【讨论】:

    • 因为我在子文件夹中没有 web.config 文件,所以我用你提供的 2 行代码添加了一个。没有改变。搜索页面仍然在 32 位应用程序池下运行。自从您告诉我将代码添加到我的 web.config 文件后,我是否遗漏了什么?是否应该超过那 2 行代码?
    • 在我的脑海中,我已经翻译了 asp -> asp.net,除了这两行之外,web.config 文件中还有相当多的代码。我不认为在 /classic/ asp 中您可以在不同的应用程序池上运行子文件夹,因为 asp 没有相同的配置概念。您可以将 global.asa 文件放入可能执行此操作的子文件夹中。如果它没有将搜索功能移动到站点根目录上的新文件夹 - 假设 Web 服务器的根目录未设置为 32 位;如果它在 IIS 中创建一个绑定到另一个端口的新站点并从主应用程序中加载代码。
    • 站点的根目录是我从中获取搜索页面并将其作为应用程序移动到子目录的位置,因为代码需要以 64 位运行。我将尝试查看您提到的 global.asa 文件。如果我不能让它工作,我会尝试看看我是否可以重新设计搜索以在 32 位模式下运行。 (创可贴)。我了解到,在某个时候,我将需要使用 64 位数据库重新设计站点,并使所有功能都在 64 位中运行。此外,我想将网站移至 .net,因为我在其他几个项目中使用过它,并且讨厌试图记住两种相似的语言。
    【解决方案2】:

    如果我打开我为主站点指定的 32 位应用程序池并 关闭对 32 位应用程序的支持,搜索工作,但因为有 没有 64 位喷射驱动程序 (MDB) 访问查询失败。

    ...

    我考虑将 mbd 数据库转换为 accdb,因为有 accdb 的 64 位驱动程序。目前,我不能这样做,因为我们的 当前的托管公司正在一个 win2k 机器上运行该站点。我在 选择新主机的过程,并使站点在 win 中运行 2008/2012 服务器。那时我可以升级数据库,但是 由于代码中有很多地方,它会变得很痛苦并且可能 需要一些时间,因为网站经常更改,我必须维护 2 转换时的版本。

    没有必要这样做。

    IIS 可以在任何 64 位窗口中以 64 位或 32 位模式自行运行。这可以使用Enable32BitAppOnWin64 directive on IIS6 激活或启用32-bit application option in IIS 7.x旧 Microsoft Access 数据库 (.mdb) 可以在 64 位或 32 位中访问,而无需转换为新的 Micorsoft Access 2007-2010 数据库 格式 (accdb),您只需要安装正确的驱动程序即可。

    目前,Microsoft 访问数据库的 64 位模式由 Microsoft.ACE.OLEDB.12.0 驱动程序 a.k.a. Microsoft Access Database Engine 2010 Redistributable 提供

    Windows 的默认安装带有旧的和已弃用的 Microsoft Access 数据库驱动程序或Microsoft.Jet.OLEDB.4.0。忽略它并安装新的

    在安装新驱动程序时,您可能需要在所有连接字符串中稍作修改(如果您不使用 DSN 的连接),但所有旧功能都可以在新驱动程序中使用。

    注意:您必须安装与您在主机中安装的 Office 版本(32 位/64 位)对应的驱动程序(如果适用)。如果您在服务器中安装了 Office(32 位),则无法安装 64 位驱动程序。如果您没有在服务器中安装 Office,请忽略此说明。

    【讨论】:

      【解决方案3】:

      在搜索了将近一天以尝试让 2 个应用程序池一起玩之后,我发现问题出在座椅和键盘之间的物体上。让我解释一下。

      当我将搜索文件作为新应用程序移动到子文件夹时,我忘记更新搜索表单的目标以指向新位置中的文件。它仍然指向旧位置。这就是搜索运行在 32 位而不是 64 位的原因。

      我现在可以说,在 Windows 7 IIS 上运行的 Classic ASP 可以有多个不同位数的应用程序池。

      【讨论】:

        猜你喜欢
        • 2013-01-04
        • 2012-01-19
        • 1970-01-01
        • 1970-01-01
        • 2012-09-01
        • 2014-04-27
        • 1970-01-01
        • 2011-09-03
        • 2020-07-04
        相关资源
        最近更新 更多