请注意,本站并不支持低于IE8的浏览器,为了获得最佳效果,请下载最新的浏览器,推荐下载 Chrome浏览器
欢迎光临。交流群:166852192

orchard从1.9.2升级到1.10.1历程2


经过进一步的实践,发现问题的根源在于orchard框架对Framework进行了代码升级,却对datamig没有写update,导致了一系列问题。具体如下:
如上文图:

framework在tasks目录下加入了Locking文件夹,并写了DistributedLockRecord
如下图

而在Orchard.ContentManagement.DataMigrations.FrameworkDataMigration中并没有创建表的update,如下图所示,


这就导致了在安装的时候会报错,不能自动更新,会报如下的错误:
Orchard.Tasks.Locking.Services.DistributedLockService - (null) - ERROR An error occurred while trying to acquire lock 'DistributedLock:Default:Orchard.JobsQueue.Services.JobsQueueProcessor'.
NHibernate.Exceptions.GenericADOException: could not execute query
[ select distribute0_.Id as Id32_, distribute0_.Name as Name32_, distribute0_.MachineName as MachineN3_32_, distribute0_.CreatedUtc as CreatedUtc32_, distribute0_.ValidUntilUtc as ValidUnt5_32_ from Orchard_Framework_DistributedLockRecord distribute0_ where distribute0_.Name=?p0 ]
  Name:p1 - Value:DistributedLock:Default:Orchard.JobsQueue.Services.JobsQueueProcessor



Orchard.Alias.Implementation.Updater.AliasHolderUpdater - (null) - ERROR Exception during Alias refresh
NHibernate.Exceptions.GenericADOException: could not execute query
[ select aliasrecor0_.Id as Id51_, aliasrecor0_.Path as Path51_, aliasrecor0_.RouteValues as RouteVal3_51_, aliasrecor0_.Source as Source51_, aliasrecor0_.IsManaged as IsManaged51_, aliasrecor0_.Action_id as Action6_51_ from Orchard_Alias_AliasRecord aliasrecor0_ where aliasrecor0_.Id>?p0 order by aliasrecor0_.Id asc ]
  Name:p1 - Value:0
有的同学可能会问,上篇文章不是说,数据库里有的模块,而实际不存在也会报错吗?这个,是我搞错了,实际只会在debug日志中产生警告信息如下图:

这个没什么要紧的,不想让提示,就在对应的数据库里把这几行数据暴力删除,谁让没有正确的unstall呢,
正确的卸载是最好在DataMigrations中写Uninstall函数,可以参考Orchard.Data.Migration.DataMigrationManager及Orchard.Data.Migration.DataMigrationCoordinator或者自己实现IFeatureEventHandler中的Uninstalled函数。
如果不在表中删除这几行数据会有什么样的影响,答案是每次启动或禁用模块,在debug日志中都会产生上述信息。这里不再提了。
接着上面的问题,如何去解决呢?
唉,开发人员没弄成自动模式,那咱就手动模式吧。
在数据库中创建如下表

再让程序跑一下,外日,可以了。连上篇文章说的在userpartrecord中插入的三个字段都省了。是不是有种很爽的感觉?还是要感谢项目组。
当然,如果自己的程序有点小问题一直提醒Orchard.Framework还需要升级,那就在如下表中将Version改为4,即可,这个只针对数据库有问题的,像我,
不针对大部分用户。



最后,艹,我的站点升级好了,怎么出现了404,对,是首页404怎么破,办法总是有的。出现这个问题的原因是:
像我,升级的时候就是把主程序拷上去,再把原来的Sites文件夹拷过来,不知道你们是不是这样,如果是和我一样,可以按以下方法解决。
这主要是因为Sites文件夹,不是orchard程序创建的,是我们拷来的,所以程序只有读取权限,没有修改和创建权限,而我们知道,它是要在sites对应的租户文件夹创建mappings.bin等文件的。我的解决办法就是粗暴的设置文件夹everyone完全控制权限,有更好的方法,欢迎提出来,说实话,我也不是专业搞这个的,我只是对orchard框架比较感兴趣,所以才来学习,实践。

忘了,还有一个小问题,升级到1.10.1之后,只要在modules的任何一个模块内更新dll,都会遇到未将对象引用设置到对象的实例 的错误,现在还没有弄清是什么原因,如果大家都有,那这或许就是1.10.1的一个变化吧。
更多详情欢迎到QQ群 166852192 交流。





作者原创内容不容易,如果觉得内容不错,请点击右侧“打赏”,赏俩给作者花花,也算是对作者付出的肯定,也可以鼓励作者原创更多更好内容。
更多详情欢迎到QQ群 166852192 交流。