【发布时间】:2021-10-03 13:26:29
【问题描述】:
多年来,我一直在 IIS 上使用 isapi.dll 文件,直至 IIS 7.0。
我现在正在尝试将我的 Server 2008R2 迁移到 Server 2019。我已经完成了我所知道的一切,但似乎没有任何效果。
这是我所做的:
- 确保 Web 服务器的服务器角色和功能包括 CGI、ISAPI 扩展和 ISAPI 过滤器。我什至删除并重新添加了所有这些功能,以确保首次安装时没有问题。
- 在 IIS 管理器的默认站点上,我添加了一个新应用程序(脚本),并确保包含所有支持文件的 dll 文件都在此文件夹中(正是在 IIS 7.0 上工作的文件)。 2.1。如果您在浏览器中打开 dll 文件,它会尝试下载该文件,这意味着我的 IIS 服务器正常工作,应用程序文件夹别名正常工作,并且 IIS 找到了该 dll 文件。
- 在应用程序文件夹的处理程序映射上,我通过勾选编辑功能权限上的执行来启用 CGI 和 ISAPI.dll。 3.1。如果你现在在服务器浏览器上打开dll,你会收到404.2错误,说明你没有将dll添加到CGI和ISAPI限制列表中,这意味着它正在将dll文件识别为ISAPI dll文件。李>
- 在 IIS 管理器中,在左侧的服务器选项卡上,打开 CGI 和 ISAPI 限制功能,添加 dll 文件并确保允许访问。我还尝试更新功能设置以启用所有未指定的 DLL 和 CGI 文件,以涵盖所有基础。 4.1。现在,如果您在浏览器中打开 dll,您应该会看到一些结果(如果某些支持文件或数据库连接不起作用,即使它是错误 500),但我得到一个 404.0 错误,表明文件丢失或移动.
我已经尝试了网络上所有建议的所有可能组合,但实际上所有这些都回到了上述步骤。
我启用了对 404 错误的跟踪,但它只是说找不到组件。
进一步测试发现这是特定于 32 位 dll 文件的。在 Enable 32bit 设置为 true 的情况下运行 32bit dll 文件会出现 404.0 错误,在 Enable 32bit 设置为 false 的情况下运行 64bit dll 文件运行没有任何问题。未正确设置启用 32 位会导致两个文件上出现预期的错误 500。
任何能指引我正确方向的帮助都会有所帮助。
【问题讨论】:
-
docs.microsoft.com/en-us/iis/troubleshoot/… FRT 应该告诉你 404.0 来自哪里。如果它来自那个 ISAPI 库本身,那么如果没有供应商,您将不会轻易得到答案。
-
谢谢,但错误跟踪不适用于 404.0,仅适用于 404.2 等实际错误消息,我已在第 3 点处理。
-
设法获得了 404.0 工作的错误跟踪,但没有新的细节,只说找不到请求的模块,与使用本地浏览器时的详细错误相同。
-
这个问题似乎特定于 32 位 dll。我加载了一个64位的dll,将允许32位设置为false,64位的dll工作正常。