2017-02-10 61 views
0

我試圖對模塊進行更改。我無法讓網站看起來反映這些變化。我想我可能會禁用該功能,並重新啓用該功能,它會強制任何模塊緩存發生重新加載模塊。然而,它完全打破了網站,現在我甚至無法從orchard.exe命令行工具啓用該功能。我收到了同樣的錯誤。基本上Autofac抱怨說它無法找到屬於該功能的類型。但是,如果該功能被刪除,我不確定它仍在嘗試加載的位置/原因。已禁用的果園模塊(功能)/整個網站已損壞

例外:

None of the constructors found with 'Orchard.Environment.AutofacUtil.DynamicProxy2.ConstructorFinderWrapper' on type 'RCAM.Products.Drivers.FeaturedProductsWidgetPartDriver' can be invoked with the available services and parameters: 
Cannot resolve parameter 'RCAM.Products.Services.IProductService productService' of constructor 'Void .ctor(RCAM.Products.Services.IProductService)'. 

我不能在管理門戶網站得到重新啓用該功能。我無法使用命令行工具。我試着在數據庫中設置[Settings_ShellFeatureStateRecord]爲Up,但是這根本沒有任何改變。它必須由文件驅動以及數據庫持久化。

這是一個生產網站,目前正在關閉。任何幫助你可以給予不勝感激。

+0

你應該永遠都不會更改代碼生產。如果你的改變阻止了模塊的編譯(就像這裏的情況那樣),它會使整個站點停下來。要取消阻止,請創建更改的副本,然後刪除模塊的目錄。該網站現在應該可以運行,減去該模塊的功能。修復它在開發機器上,然後部署該工作版本。 –

+0

伯特蘭。感謝您的建議。它在我的本地開發機器上進行了編譯,並且代碼更改在本地按預期工作。我的假設是,我可以複製/覆蓋生產服務器上module/bin文件夾中的新模塊二進制文件,並且它會立即反映這些更改,就像它在正常的MVC應用程序中那樣。它甚至沒有,即使在回收應用程序池之後。您在上面看到的錯誤僅在管理員門戶中禁用該功能後纔出現,並立即發生。 –

+0

通過部分文件複製進行部署可能會以許多不同的細微方式失敗。動態編譯可能在目標上打開或關閉,你的app_data/Dependencies可能需要刪除等。在部署之前發佈或構建預編譯通常是一個好主意。 –

回答

0

你的問題沒有說清楚,如果你直接在生產現場改變了代碼,或者如果它一個正確部署後不久墜毀,所以這裏是我的兩分錢:

如果您在更改您的模塊一個現場環境,你應該刪除你的App_Data/Dependencies - 之後的文件夾的內容。無需重新啓用模塊。

如果您尚未禁用Dynamic Module loader,則這隻適用於生產環境中應執行的操作。


否則,請確保您的模塊實際編譯。您應該將您的模塊添加到Orchard.Web的構建依賴關係中,以確保每次在開發計算機上運行Orchard時都會重新編譯它。

對於從App_Data文件刪除功能,而不是僅僅將其禁用,它應該是足夠卸載模塊文件夾,刪除YourModule.dll /依賴

+0

我將此標記爲正確,因爲我沒有意識到我可以刪除App_Data/Dependencies文件夾,並且它會動態重建。謝謝 –