使用ColdFusion 10/11的IIS 8/8.5上的错误500

问题描述:

如果我的ColdFusion脚本中有错误,我得到的是来自IIS而不是ColdFusion的500错误消息。只有当我在URL中提供文件名时才会发生这种情况,如果我打开没有脚本名称的URL(这会打开index.cfm),就不会发生这种情况。使用ColdFusion 10/11的IIS 8/8.5上的错误500

例如:

我可以重现对我的3个ColdFusion的平台2这个问题:

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

我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连接器有问题。

+0

你在application.log中看到了什么吗? –

+0

是的,我可以找到我引发的ColdFusion错误。 ColdFusion引发正确的错误,但IIS忽略它。 – android

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

问题

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

溶液

该溶液很容易。我只需要将existingResponse="PassThrough"设置添加到根IIS网站的web.config中,并且一切正常。

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

+2

虽然这似乎也解决了我的问题,但它具有不可接受的副作用,也有效地禁用了我在IIS中配置的自定义404错误处理程序脚本,以执行/error_404.cfm –