如果我的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>
对我而言,看起来ColdFusion连接器与IIS 8和IIS 8.5存在问题。
答案 0 :(得分:6)
好的,我终于能够解决这个问题了。
问题
我在同一个IIS网站下的每个虚拟目录中运行多个Web应用程序。事实证明,将existingResponse="PassThrough"
添加到web.config只能在虚拟目录中部分工作。没有这个设置我从来没有得到任何ColdFusion错误,而是我总是看到IIS 500错误。如果我在虚拟目录的web.config中添加existingResponse="PassThrough"
,则只有在不直接调用.cfm脚本的情况下访问站点时才会转发ColdFusion错误(例如:example.com/而不是example.com/index .CFM)。
解决方案
解决方案很简单。我只需将existingResponse="PassThrough"
设置添加到根IIS网站的web.config中,一切正常。
我认为这是IIS 8和8.5中的一个错误,因为我在IIS 7.5服务器上进行了双重检查,并且我没有必要在根网站上添加该属性。