任何人都可以向我解釋這種行爲? 我在onApplicationStart
中設置了一堆應用程序範圍設置,其中一些在onSessionStart
中提到。但是,當啓用ORM時,似乎onApplicationStart根本沒有運行,因此我的onSessionStart方法失敗。ColdFusion - 啓用ORM停止onApplicationStart從運行
我花了一段時間才發現這是個問題,通常我會在開發過程中以編程方式測試onApplicationStart
。所以只有在服務重新啓動後,我發現了一個症狀。最後,我追查回ORM和它的那樣簡單:
THIS.ormenabled = true; // Error
THIS.ormenabled = false; // Everything peachy
我剝離下來的Application.cfc並把一些時間戳在不同的方法,這樣我可以看到正在執行:
<cfscript>
THIS.Name = "TestyMcTestable"
THIS.datasource = 'Test';
THIS.ormenabled = true;
</cfscript>
<cfsetting
requesttimeout="20"
showdebugoutput="false"
enablecfoutputonly="false"
/>
<cfset request.pseudo = Now() />
<cfset sleep(1500)>
<cffunction name="OnApplicationStart" access="public" returntype="boolean" output="false">
<cfset request.application = Now() />
<cfset sleep(1500)>
<!--- Return out. --->
<cfreturn true />
</cffunction>
<cffunction name="OnSessionStart" access="public" returntype="void" output="false">
<cfset request.session = Now() />
<cfset sleep(1500)>
<!--- Return out. --->
<cfreturn />
</cffunction>
<cffunction name="OnRequestStart" access="public" returntype="boolean" output="false">
<cfargument name="TargetPage" type="string" required="true" />
<cfset request.requeststart = Now() />
<cfset sleep(1500)>
<!--- Return out. --->
<cfreturn true />
</cffunction>
<cffunction name="OnRequest" access="public" returntype="void" output="true">
<cfargument name="TargetPage" type="string" required="true" />
<cfset request.request = Now() />
<cfset sleep(1500)>
<!--- Include the requested page. --->
<cfinclude template="#ARGUMENTS.TargetPage#" />
<!--- Return out. --->
<cfreturn />
</cffunction>
我index.cfm只包含請求範圍的轉儲。 如果我刪除了orm設置,它就會按預期返回。但是,在那裏設置,應用程序啓動時設置的變量完全丟失,看起來onApplicationStart根本沒有運行。
我通過更改中間請求中的應用程序名稱進行測試,但僅僅是爲了確定我已重新啓動服務。
我錯過了什麼嗎?這是記錄的行爲?我在Railo上運行這個程序 - 我沒有在ACF上進行過廣泛的測試,但最初的問題也出現在那裏,所以我認爲它是同樣的原因。
任何人都可以對此有所瞭解嗎?
您是否嘗試過使用'cfset'而不是'cfscript',並且您還試圖提供'ormsettings'結構來查看會發生什麼?我認爲這些都不重要,但如果它是一個錯誤,陌生人可以修復它。 – Travis 2013-03-20 22:56:56
在''application.cfc''的非剝離版本中是否啓用了'sessionmanagement'?你不在這個例子中。 – Travis 2013-03-20 23:08:07
在非精簡版中,我確實啓用了sessionmanagement。它似乎沒有任何不同之處。 我試圖移動到cfset,並提供一個ormsettings結構,無濟於事。雖然謝謝! – 2013-03-20 23:14:56