已解决 - 在 IIS 10 下已重命名为 .doc 的 ASP 文件中启用服务器端包含

问题描述 投票:0回答:1

我已经将一个经典的 ASP 应用程序从旧的 Windows 2003 服务器移动到带有 IIS 10 的新服务器。

运行良好,服务器端包含在 .asp 文件中完美运行。

但是,该应用程序包含一些包含 SSI 指令的 .asp 文件,并且这些 .asp 文件已重命名为具有 .doc 文件扩展名(一旦处理,它们将在客户端的 Word 上打开)。那些重命名的 .doc 文件中的 SSI 指令不会触发。

所有的 INCLUDE 文件都是 .asp`s.

这在 2003 服务器上运行良好,因为 .doc 文件已扩展映射到 asp.dll 库。

我一直无法找到在新的 IIS 10 服务器上实现相同功能的方法。

如果 .doc 文件重命名为 .asp,它们中的 SSI 可以完美工作,所以内容很好,当它们被命名为 .doc 时,IIS 对它们的处理让我无法理解。

我已经尝试为 .doc 添加一个脚本映射,其内容与 .asp 脚本映射相同,尝试为 .doc 文件添加一个模块映射到 ServerSideInclude 模块(部分成功,包含工作,但完整的页面源代码是在客户端的 Edge 窗口中可见)。

我在网上找到了有关如何在 .htm 和 .html 文件中启用 SSI 的参考资料,但同样的指导似乎不适用于 .doc 文件扩展名。

寻找任何提示或指导,或确认是否可能(或不可能)。

iis asp-classic iis-10
1个回答
0
投票

问题现已解决。

我观察到 .doc 文件已被扩展映射到旧服务器上的 asp.dll 库。

我还在新服务器上为 .doc 文件添加了一个处理程序映射(具有与 .asp 处理程序相同的详细信息),但这没有用。

当我检查添加到我的 web.config 中的内容时,虽然它显示了一个没有出现在 IIS 屏幕上的处理程序属性:

<add name="ASP Classic Word" path="*.doc" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" preCondition="bitness64" />

那个“preCondition”值是唯一没有出现在 IIS 屏幕上的值,所以我专门用谷歌搜索了它并找到了一篇 MS 文章,上面写着:

指定“integratedMode”,当处理程序应该只响应 应用程序池中配置为使用 集成请求处理管道。

我的应用程序 App Pool 使用集成模式,所以我手动编辑了 web.config,将“bitness64”替换为“integratedMode”并解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.