1

我一直在尝试设置自定义 404 页面,以便在页面丢失时显示用户友好的消息。也就是说,我的 Web 服务器(IIS 8)不处理 .cfm 页面,因此我编写了一个简单的测试脚本来处理带有 Application.cfc 的 onMissingTemplate 的 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 由于某种原因导致了这个问题。当我删除它时,该函数返回页面!

4

0 回答 0