onMissingTemplate返回空白页,可能与IIS冲突

onMissingTemplate返回空白页,可能与IIS冲突,iis,coldfusion,coldfusion-10,iis-8,Iis,Coldfusion,Coldfusion 10,Iis 8,我一直在尝试设置一个自定义404页面,以便在页面丢失时显示用户友好的消息。这就是说,我的web服务器(IIS 8)不处理.cfm页面,因此我编写了一个简单的测试脚本,用ing Application.cfc处理missingtemplate上的cfm页面 <cffunction name="onMissingTemplate" returnType="boolean" output="true"> <cfargument name="targetPage" type="stri

我一直在尝试设置一个自定义404页面,以便在页面丢失时显示用户友好的消息。这就是说,我的web服务器(IIS 8)不处理.cfm页面,因此我编写了一个简单的测试脚本,用ing Application.cfc处理missingtemplate上的cfm页面

<cffunction name="onMissingTemplate" returnType="boolean" output="true">
<cfargument name="targetPage" type="string" required=true/>
<cfset var emails = "abcd@hotmail.com,abcd@gmail.com">

<cftry>
    <!--- Log all errors. --->
    <cflog type="error" text="Missing template: #Arguments.targetPage#">
    <!--- Send an email with an error message. --->

    <cfmail to="#emails#" from="no-reply@site.com" subject="Missing page: #Arguments.targetPage#" type="html">
     #Arguments.targetPage# could not be found.
    </cfmail>
    <cfinclude template="404.cfm">
    <cfreturn true />
    <!--- If an error occurs, return false and the default error
        handler will run. --->
    <cfcatch>
        <cfreturn false />
    </cfcatch>
</cftry>
</cffunction>

#找不到Arguments.targetPage#。
在IIS设置中将系统默认页面更改为404.cfm之前,上述代码工作正常。在404.cfm页面上,我只有

<cfheader statuscode="404">

和HTML代码。一旦更改默认页面,函数将返回一个空白页面!如何对此进行分类,或者将.cfm页面的处理也分配给web服务器?有没有人经历过类似的事情


编辑正如我在404上看到的cfheader。cfm出于某种原因导致了问题。当我删除它时,函数返回页面

这一点以前已经讨论过了。请阅读对的答案(两个)。唯一的问题是,由于共享主机,我无法访问CF管理员:(这不重要,因为您可以在Application.cfc中使用onMissingTemplate方法。关键是,如果您返回404头,那么它会告诉IIS运行自己的404处理程序。我的另一个答案提到的重复处理问题是因为有一个ColdFusion模板同时为IIS和ColdFusion 4提供服务04错误。如果愿意,您可以为IIS和ColdFusion定义不同的处理程序(如该问题的第二个答案所示)。