7

如果我的 ColdFusion 脚本中有错误,我会从 IIS 而不是 ColdFusion 收到 500 错误消息。仅当我在 URL 中提供文件名时才会发生这种情况,并且如果我打开没有脚本名称的 URL(这将打开 index.cfm)则不会发生这种情况。

例如:

我可以在我的 3 个 ColdFusion 平台中的 2 个上重现此问题:

  • 工作:带有 ColdFusion 10 Update 12 的 IIS 7.5(带有更新的连接器)
  • 工作:带有 ColdFusion 10 Update 12 的 IIS 8(带有更新的连接器)
  • 工作:带有 ColdFusion 11 的 IIS 8.5

我的 index.cfm 和 foobar.cfm:

<!--- provoke a coldfusion error --->
<cfset foo

我的 web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="Custom" existingResponse="PassThrough" />
    </system.webServer>
</configuration>

对我来说,带有 IIS 8 和 IIS 8.5 的 ColdFusion 连接器似乎存在问题。

4

1 回答 1

6

好的,我终于能够解决这个问题。

问题

我在同一个 IIS 网站下的自己的虚拟目录中运行多个 Web 应用程序。事实证明,添加existingResponse="PassThrough"到 web.config 仅在虚拟目录中部分起作用。如果没有该设置,我永远不会收到任何 ColdFusion 错误,而是总是看到 IIS 500 错误。如果我existingResponse="PassThrough"在虚拟目录的 web.config 中添加,ColdFusion 错误只会在您访问该站点而不直接调用 .cfm 脚本时转发(例如:example.com/ 而不是 example.com/index.cfm)。

解决方案

解决方案很简单。我只需要将existingResponse="PassThrough"设置添加到根 IIS 网站的 web.config 中,一切正常。

我认为这是 IIS 8 和 8.5 中的一个错误,因为我在我的 IIS 7.5 服务器上仔细检查了它,并且我不必在根网站上添加该属性。

于 2014-05-07T18:58:13.363 回答