如果我的 ColdFusion 脚本中有错误,我会从 IIS 而不是 ColdFusion 收到 500 错误消息。仅当我在 URL 中提供文件名时才会发生这种情况,如果我打开没有脚本名称的 URL(这将打开 index.cfm),则不会发生这种情况。
例如:
我可以在我的 3 个 ColdFusion 平台中的 2 个上重现这个问题:
我的 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 连接器似乎存在问题。
最佳答案
好吧,我终于能够解决这个问题了。
问题
我在同一个 IIS 网站下的自己的虚拟目录中运行多个 Web 应用程序。原来加existingResponse="PassThrough"
到 web.config 仅在虚拟目录中部分工作。如果没有该设置,我永远不会收到任何 ColdFusion 错误,而是总是看到 IIS 500 错误。如果我添加 existingResponse="PassThrough"
在虚拟目录的 web.config 中,仅当您访问该站点而未直接调用 .cfm 脚本(例如:example.com/而不是 example.com/index.cfm)时才会转发 ColdFusion 错误。
解决方案
解决方法很简单。我只需要添加 existingResponse="PassThrough"
设置为根 IIS 网站的 web.config 以及一切正常。
我认为这是 IIS 8 和 8.5 中的一个错误,因为我在我的 IIS 7.5 服务器上仔细检查了它并且我不必在根网站上添加该属性。
关于coldfusion - 带有 ColdFusion 10/11 的 IIS 8/8.5 上的错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495634/