当前位置:  开发笔记 > 编程语言 > 正文

在没有"解析文件或目录未找到"错误的情况下重新加载Fusebox应用程序的最佳方法是什么?

如何解决《在没有"解析文件或目录未找到"错误的情况下重新加载Fusebox应用程序的最佳方法是什么?》经验,为你挑选了1个好方法。

我有一个使用CF8和Fusebox 5的站点.无论何时我需要为站点添加新功能,我通常都需要为circuit.xml.cfm添加一个新的保险丝,用于控制器,模型或视图,或者全部.要启用这些新功能/页面,请转到以下网址:

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

最后一个参数是我最近选择的参数,并确定使用它可以启用我的新保险丝; 没有它,新的保险丝不被识别.但是,当我这样做时,删除之前生成的所有解析文件.这不是什么大问题,因为它们在第一次需要时会动态重新生成,但我有一些页面在访问时会返回错误.该错误表示目录未找到,但它们在那里,每次出现都是因为解析文件不存在.

以下是堆栈跟踪的一个错误示例:

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,但没有fusebox.loadclean = true:

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

我尝试做的是在去第一个网址之后,我会去第二个网址,但错误仍然存​​在.

我正在寻找的是重新加载电路而不产生这些错误的正确方法.我是第三个参与此站点的开发人员,因此前两个可能有不同的配置每个circuit.xml.cfm实例的样式.这些文件用于确定所需内容的应用程序流,附加安全层以及指定某些属性.这是Fusebox方法:



    
        
        
        
        
        
    

    
        
        

        
        
            
                
                
            
            
                
                
            
        

        
    




    
        
    

    
        
    

    
        
    




    
        
    

    
        
    

这是Fusebox和ColdFusion方法的混合:



    
        
        
        
        
    

    
        
        
        
        
    












    




这两种方法都在整个站点中使用,我并不反对使用任何一种方法,但我的目标是减少用户尝试访问特定页面时可能出现的任何错误.我当时认为问题可能是混合的配置方法,我应该坚持使用Fusebox方法,但是我没有找到这个错误的常见趋势.每次页面收到​​错误时,我们都有错误处理程序给我发电子邮件,所以我想我可以自动调用我的第二个URL并将它们重定向回发生此特定错误时生成错误的页面,但这有无限循环的潜力,并没有解决真正的问题.

我错了吗?我可以在网址中包含哪些属性,这些属性会强制网站识别新的保险丝而不清除我的解析文件?CF本身并不难编码,但我还是比较新的,所以我可以向后看.谢谢!



1> Peter Bought..:

注意:新的保险丝不需要保险丝盒重新加载 - 只有新的保险丝需要一个.

我不完全确定你所得到的错误是否是我认为的错误,但以下是好的做法,无论......

当您进行更改并需要重新装载保险丝盒时,您应该做的是:

    将最新代码部署到同一服务器上的pre-Live"staging"区域.

    使用fusebox.parseall=true和在此区域生成已解析的文件fusebox.loadclean=true

    将所有文件从那里复制到您的Live webroot.

    fusebox.load=true在Live网站上执行fusebox - 没有别的(密码除外).

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

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有