我正在運行帶有IIS的Windows 2008 Server 64位應用了修補程序2的ColdFusion 9,0,1,274733。當OnApplicationEnd事件觸發時,它不能再解析我在Application.cfc中定義的映射
我寫了一個cfc來處理日誌(用戶審計)到數據庫表。基本上我在請求週期的不同時間點調用這個cfc。在應用程序啓動,請求結束,應用程序結束以及發生錯誤時。這一切都很好,直到應用程序過期。
所以這裏是我的Application.cfc中的一些相關部分。 我定義映射到CFC的位置的任何cffunction之外,像這樣:
this.versionfolder="version1";
this.mappings["/modules"]="C:\Webroot\folder\#this.versionfolder#";
然後在上述應用程序事件,我可以叫我的日誌CFC像這樣:
<cfinvoke component="/modules/LogIt" method="Store" />
這正常工作,直到應用程序到期。當代碼觸發我CFINVOKE在OnApplicationEnd方法記錄模塊我得到這個錯誤:
Message: Could not find the ColdFusion component or interface /modules/LogIt.
Detail: Ensure that the name is correct and that the component or interface exists.
我知道,CFC存在已調用它在整個應用程序的生命週期完全相同的方式。有其他人看到過這種行爲嗎?
爲了解決這個問題,我遇到這個問題的應用程序位於web根目錄下。我有另一個應用程序,運行在同一臺服務器上,它位於此應用程序的一個子文件夾中(它們具有不同的應用程序名稱)。我在Application.cfc中使用了完全相同的邏輯,通過該應用程序的映射引用相同的日誌記錄cfc,並且在應用程序結束時它工作正常。我很難過,並且無法找到關於這個特定場景的任何信息。
很明顯,我的應用程序在web根目錄中每次都在應用程序結束時失敗。我的應用程序在子文件夾中每次都有效。不確定這是否相關,但是網絡根應用程序是在子文件夾應用程序之前啓動(訪問)的。儘管我只測試過網頁根應用程序,但仍然失敗。我也嘗試過使用點符號來表示組件名稱,但它仍然失敗。
該組件的名稱是「LogIt」,但CF返回有關名爲「Log」的組件的消息?這是正確的還是隻是你的錯字? –
哎呀,對不起,是的,這是我的一個錯字。我已更正錯誤消息中的錯字。 –
沒有人遇到過這個問題嗎?任何人都知道可能會發生什麼?這並不是一個真正的表現障礙,因爲我只是想記錄應用程序已經結束的事實,但在這一點上,我很好奇它爲什麼在根目錄中失敗,而不是在子文件夾中。 –