【问题标题】:Connecting Old ASP site to Access (.mdb) on server 2012将旧 ASP 站点连接到服务器 2012 上的 Access (.mdb)
【发布时间】:2014-08-28 15:06:09
【问题描述】:

我觉得这个标题很能说明问题。当我尝试访问我网站上使用 Access DB 的页面时,我不断收到服务器 500 错误。

我使用驱动程序Driver do Microsoft Access (*.mdb) 创建了一个 ODBC(32 位)数据源。

我确定我使用了错误的驱动程序/IIS 配置。这曾经托管在旧服务器上,我们正在尝试将所有内容移过来。

谁能指出我正确的方向?谢谢!

编辑

我能够将错误打印到我的页面上。以下是以下错误:

用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80004005”
[Microsoft][ODBC Driver Manager] 未找到数据源名称
并且没有指定默认驱动程序

当我启用 32 位应用程序时,我收到以下错误:

HTTP 错误 404.17 - 未找到
请求的内容似乎是脚本,并且将
不能由静态文件处理程序提供服务。

【问题讨论】:

  • IUSR 对文件和文件夹有权限吗?
  • 请看上面的编辑谢谢
  • 您可能需要启用 32 位应用程序。 this answer 有帮助吗?
  • @GordThompson - 当我启用 32 位应用程序时,我收到 404.17 错误。请查看我的编辑内容以及完整错误的详细信息。

标签: ms-access iis asp-classic windows-server-2012 root


【解决方案1】:

此问题与在 64 位服务器上运行 32 位应用程序有关。此外,如果您在其上安装了其他东西(例如 Outlook Web Access 或简称 OWA),它可能会通过添加 64 位模块来全局加载而中断 IIS,这将有效地导致 32 位池错误。

以下调试假设您需要在 64 位 IIS 服务器上运行 32 位 ASP 应用程序。

  1. 您必须将应用程序池设置为 32 位运行
  2. 如果 32 位池在您请求 ASP 页面后立即停止,这意味着很可能有 64 位模块无法加载。您需要通过查看 Windows 事件日志 (eventvwr) 来查看是哪个 dll 造成了问题。然后,您逐个编辑 applicationHost.config 文件并将preCondition="bitness64" 添加到您在 eventvwr 中看到的每个模块,直到您消除日志中的所有错误。
  3. 完成第 2 步后,您的池应该可以正常工作,但您的应用程序可能无法正常工作 - 即使有 ASP 的 ISAPI 处理程序,它也很可能会报告 404.17。打开 IIS 时,在左侧选择服务器,在右侧打开 ISAPI 和 CGI​​ 限制。您将看到那里有一个 ASP 条目(如果没有 - 您需要将它作为一个功能安装在服务器上)。 ASP 可能指向%windir%\system32\asp.dll 之类的东西,但您需要输入另一个条目。您的 appPool 在 64 位机器上以 32 位运行(缩写为 WOW64 = 32 位 Windows 应用程序在 Windows 64 位上运行 - Windows 上的 Windows64),您需要从 %windir%\SYSWOW64\asp.dll 添加一个 asp。此外,添加相应的处理程序(导航到处理程序,实际上重复 asp 的条目,但使用 SYSWOW64 文件夹而不是 system32

这应该(最终)让它工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2018-02-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多