在 Coldfusion 8 中使用 onMissingTemplate() 处理 404 错误不起作用

发布于 2024-10-21 23:58:14 字数 1473 浏览 2 评论 0原文

我正在尝试使用 Application.cfc 中的 onMissingTemplate() 方法处理 ColdFusion 应用程序中的 404 错误。

我的开发环境是ColdFusion 8(开发版)+ JRun + Linux。在 [web_root]/testmissing/Application.cfc 中,我有来自 CF 文档的代码:

<cfcomponent>

    <cffunction name="onMissingTemplate">
        <cfargument name="targetPage" type="string" required=true/>

        <!--- Use a try block to catch errors. --->
        <cftry>
            <!--- Log all errors. --->
            <cflog type="error" text="Missing template: #Arguments.targetPage#">

            <!--- Display an error message. --->
            <cfoutput>
                <h3>#Arguments.targetPage# could not be found.</h2>
                <p>You requested a non-existent ColdFusion page.<br />
                Please check the URL.</p>
            </cfoutput>

            <cfreturn true />

            <!--- If an error occurs, return false and the default error
            handler will run. --->
            <cfcatch>
                <cfreturn false />
            </cfcatch>
        </cftry>

    </cffunction>
</cfcomponent>

当我浏览 /testmissing/foo.cfm 时,我得到默认的 CF“找不到文件:...”错误页面。

我在不同的环境下尝试了相同的代码:Coldfusion 9(开发版)+ Apache + Windows。正如预期的那样,浏览 /testmissing/foo.cfm 会导致来自 onMissingTemplate 的客户错误消息。

这证明代码没问题,问题出在我的开发环境中的某个地方,但我找不到它。为什么我仍然收到默认的 CF 错误页面,有什么想法吗?

I am trying to handle 404 errors in my ColdFusion app with onMissingTemplate() method in Application.cfc.

My dev environment is ColdFusion 8 (dev edition) + JRun + Linux. In [web_root]/testmissing/Application.cfc I have code from CF docs:

<cfcomponent>

    <cffunction name="onMissingTemplate">
        <cfargument name="targetPage" type="string" required=true/>

        <!--- Use a try block to catch errors. --->
        <cftry>
            <!--- Log all errors. --->
            <cflog type="error" text="Missing template: #Arguments.targetPage#">

            <!--- Display an error message. --->
            <cfoutput>
                <h3>#Arguments.targetPage# could not be found.</h2>
                <p>You requested a non-existent ColdFusion page.<br />
                Please check the URL.</p>
            </cfoutput>

            <cfreturn true />

            <!--- If an error occurs, return false and the default error
            handler will run. --->
            <cfcatch>
                <cfreturn false />
            </cfcatch>
        </cftry>

    </cffunction>
</cfcomponent>

When I browse /testmissing/foo.cfm I get default CF "File not found:..." error page.

I tried the same code on different environment: Coldfusion 9 (dev edition) + Apache + Windows. Browsing /testmissing/foo.cfm resulted in custome error message from onMissingTemplate, as expected.

This proves the code is ok and the problem is somewhere in my dev environment, but I can't find it. Any ideas why I am still getting the default CF error page?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我的鱼塘能养鲲 2024-10-28 23:58:14

CF 管理员中的错误处理程序设置如何?比较您的 CF8 和 CF9 环境。

How are your Error Handlers setup in your CF Administrator? Compare between your CF8 and CF9 environments.

终难愈 2024-10-28 23:58:14

你试过没有 try/catch 吗?只是想确保您没有掩盖 cflog 的问题。

Have you tried without the try/catch in there? Just want to make sure you're not obscuring an issue with cflog.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文