我在瀏覽器中無法複製的日誌中遇到問題。我每天獲得數百個這樣的數字無效的組件定義
invalid component definition, can't find component [cfc.udf]
cfc存儲在應用程序上一級的cfc文件夾中。這使得許多應用程序可以使用相同的cfc。
文件夾結構:
---- cfc
--------- udf.cfc
---- myApp
--------- application.cfc
在的Application.cfc,我使用的是專用的映射,因爲這是在生產中有很多不同的負載平衡服務器的設置,以及一個QA環境和當地的測試環境並保持全部同步將是困難的。
在onRequestStart,我有一個函數,每5分鐘重新啓動應用程序。它由顧問提供。我懷疑這是罪魁禍首,因爲日誌顯示這些錯誤來在整整5分鐘的間隔
<cfcomponent>
<cfset This.name = "myApp">
<cfset This.Sessionmanagement=true>
<cfset This.Sessiontimeout="#createtimespan(0,0,30,0)#">
<cfset this.mappings['/cfc'] = ExpandPath('../cfc')>
<cffunction name="onApplicationStart">
<cfset Application.udf = createObject("component", "cfc.udf").init()>
</cffunction>
<cffunction name="onRequestStart">
<cfset appRefreshMinutes = 5>
<cfif Not IsDefined("Application.refreshTime")>
<cfset currentMinute = Minute(Now())>
<cfset Application.refreshTime = DateAdd("n", -(currentMinute MOD appRefreshMinutes)+appRefreshMinutes, Now())>
<cfset Application.refreshTime = DateAdd("s", -(Second(Application.refreshTime)), Application.refreshTime)>
</cfif>
<cfif Now() GTE Application.refreshTime Or IsDefined("URL.reload")>
<cflock name="ApplicationInit" type="exclusive" timeout="5" throwontimeout="false">
<cfif Now() GTE Application.refreshTime Or IsDefined("URL.reload")>
<cfset OnApplicationStart()>
<cfset Application.refreshTime = DateAdd("n", appRefreshMinutes, Application.refreshTime)>
</cfif>
</cflock>
</cfif>
</cffunction>
</cfcomponent>
您是否嘗試過使用映射名稱而不是'/ cfc'?像''cfset this.mappings ['/ somethingelse'] = ExpandPath('../ cfc')>',這樣你就可以像調用它一樣'。也許它看起來很奇怪... –
我繼續並測試更改映射名稱。現在我必須等待,看看它是否會再次發生,因爲我無法複製它 –
@ Miguel-F:你說得對,它是導致問題的映射的名稱。請提交它作爲答案,以便我可以接受它作爲正確的答案 –