2017-02-10 66 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文件夹,并且它会动态重建。谢谢 –