我一直在尝试设置自定义404页面,以便在页面丢失时显示用户友好的消息。也就是说,我的Web服务器(IIS 8)不处理.cfm页面,因此我编写了一个简单的测试脚本来处理带有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>
以上代码正常工作,直到我在IIS设置中将系统默认页面更改为404.cfm。在404.cfm页面上我只有
<cfheader statuscode="404">
和HTML代码。一旦更改了默认页面,该功能就会返回一个空白页面!如何对此进行排序,或者.cfm页面的处理也应该分配给Web服务器?有没有人经历过类似的事情?
编辑正如我所看到的,404.cfm上的cfheader由于某种原因导致了问题。当我删除它时,该函数返回页面!