gpt4 book ai didi

coldfusion - 重新加载Fusebox应用而又不出现 "parsed file or directory not found"错误的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 04:01:34 34 4
gpt4 key购买 nike

我有一个使用CF8和Fusebox 5的站点。每当我需要向该站点添加新功能时,通常都必须向circuit.xml.cfm添加新的 fuse ,以用于 Controller ,模型或 View 或全部。要启用这些新功能/页面,请转到以下网址:

?fusebox.load=true&fusebox.parse=true&fusebox.password=password&fusebox.loadclean=true

最后一个参数是我最近使用的参数,并确定使用它可以启用新的 fuse 。没有它,新的 fuse 将无法被识别。但是,当我这样做时,之前生成的所有解析文件都将被删除。这并不是什么大问题,因为它们是在第一次需要它们时便会即时生成的,但是我有一些页面在访问它们时会返回错误。该错误表明找不到目录,但它们存在于此,每次出现时都是因为解析文件不存在。

这是一个堆栈跟踪错误的示例:
Error - Parsed File or Directory not found.

Date/Time: Apr 25 2009 12:26:02

Type: fusebox.missingParsedFile

Message: Parsed File or Directory not found.

Detail:

Attempting to execute the parsed file 'login.logout.cfm' threw an error. This can occur if the parsed file does not exist in the parsed directory or if the parsed directory itself is missing.
Stack Trace:
coldfusion.runtime.CustomException: Parsed File or Directory not found.
at coldfusion.tagext.lang.ThrowTag.doStartTag(ThrowTag.java:124)
at coldfusion.runtime.CfJspPage._emptyTag(CfJspPage.java:2644)
at cffusebox52ecfm1214986498.runPage(C:\example.com\fb5core\fusebox5.cfm:216)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:192)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:366)
at coldfusion.runtime.CfJspPage._emptyTag(CfJspPage.java:2644)
at cfindex2ecfm584653367.runPage(C:\example.com\index.cfm:3)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:192)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:366)
at coldfusion.runtime.CfJspPage._emptyTag(CfJspPage.java:2644)
at cfApplication2ecfc1103573364$funcONREQUEST.runFunction(C:\example.com\Application.cfc:36)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324)
at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:56)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308)
at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:74)
at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:243)
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:269)
at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
at coldfusion.CfmServlet.service(CfmServlet.java:175)
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:284)
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

我要解决此问题的方法是转到以下URL,该URL与上一个URL类似,但没有fusebox.loadclean = true:
?fusebox.password=password&fusebox.load=true&fusebox.parse=true

我尝试做的是在转到第一个URL之后,我将转到第二个URL,但是错误仍然出现。

我正在寻找的是在不产生这些错误的情况下重新加载电路的正确方法。我是第三个参与此站点的开发人员,因此前两个开发人员可能具有不同的样式来配置circuit.xml.cfm的每个实例。这些文件用于确定所需内容的应用程序流程,其他安全层并指定某些属性。这是Fusebox方法:
<!-- controller/circuit.xml.cfm -->
<circuit access="public">
<fuseaction name="index">
<set name="request.title" value="Account overview" />
<do action="layout.header" />
<do action="mdashboard.index" />
<do action="vdashboard.index" />
<do action="layout.footer" />
</fuseaction>

<fuseaction name="profile">
<set name="request.title" value="Your Profile" />
<do action="layout.header" />

<!-- form submitted to the same page -->
<if condition="isDefined('attributes.submit')">
<true>
<do action="mdashboard.updateprofile" />
<do action="vdashboard.profile" />
</true>
<false>
<do action="mdashboard.profile" />
<do action="vdashboard.profile" />
</false>
</if>

<do action="layout.footer" />
</fuseaction>
</circuit>

<!-- model/circuit.xml.cfm -->
<circuit access="internal">
<fuseaction name="index">
<include template="sqlIndex" />
</fuseaction>

<fuseaction name="profile">
<include template="sqlProfile" />
</fuseaction>

<fuseaction name="updateprofile">
<include template="actUpdateProfile" />
</fuseaction>
</circuit>

<!-- view/circuit.xml.cfm -->
<circuit access="internal">
<fuseaction name="index">
<include template="dspIndex" />
</fuseaction>

<fuseaction name="profile">
<include template="dspProfile" />
</fuseaction>
</circuit>

这是Fusebox和ColdFusion方法的混合:
<!-- controller/circuit.xml.cfm -->
<circuit access="public">
<fuseaction name="index">
<set name="request.title" value="Account overview" />
<do action="layout.header" />
<include template="ctrlIndex" />
<do action="layout.footer" />
</fuseaction>

<fuseaction name="profile">
<set name="request.title" value="Your Profile" />
<do action="layout.header" />
<include template="ctrlProfile" />
<do action="layout.footer" />
</fuseaction>
</circuit>

<!-- model/circuit.xml.cfm -->
<circuit access="internal">
</circuit>

<!-- view/circuit.xml.cfm -->
<circuit access="internal">
</circuit>

<!-- controller/ctrlProfile.cfm -->
<cfif isDefined("attributes.submit")>
<cfinclude template="../model/actUpdateProfile.cfm">
</cfif>

<cfinclude template="../model/sqlPaymentOptions.cfm">
<cfinclude template="../view/dspPaymentOptions.cfm">

两种方法都在整个站点中使用,我不反对使用任何一种方法,但是我的目标是减少用户尝试访问特定页面时可能出现的任何错误。我当时在想,问题可能出在配置的混合方法上,我应该坚持使用,例如Fusebox方法,但是在此错误中我找不到共同的趋势。每当页面收到错误时,我们提供的错误处理程序都会通过电子邮件向我发送电子邮件,因此,我认为我可以自动调用我的第二个url,并将其重定向回发生此特定错误时生成该错误的页面,但这无限循环的潜力,但无法解决真正的问题。

我会错误地解决吗?我可以在网址中包含哪些属性集,这些属性将迫使站点在不清除我的解析文件的情况下识别新的 fuse ? CF本身并不难编写代码,但是我还是比较陌生,所以我可能会倒退。谢谢!

最佳答案

注意:新的 fuse 不需要重新加载 fuse -仅新的 fuse 需要一个。

我不能完全确定您遇到的错误是否是我认为的错误,但是无论如何,以下做法都是很好的做法...

进行更改并需要重新加载 fusebox 时,您应该做的是:

  • 将最新代码部署到同一服务器上的实时“登台”区域。
  • 使用fusebox.parseall=truefusebox.loadclean=true在此区域生成解析的文件
  • 将所有文件从那里复制到Live webroot。
  • 在Live网站上执行一个融合箱fusebox.load=true-别的(密码除外)。

  • (注意:如有必要,请在步骤3之前将您的网站设置为离线/维护模式,然后在步骤4之后将其重新设置为在线)

    关于coldfusion - 重新加载Fusebox应用而又不出现 "parsed file or directory not found"错误的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789418/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com