网站已升级到1.10.3,在UserPart ContentQuery上引发StrackOverflowException。如何解决?

问题描述 投票:0回答:1

我继承了一个Orchard项目,该项目始于版本1.6,随后毫无问题地升级到1.7、1.8、1.9和1.9.3。我现在已采取步骤升级到1.10.3。这涉及将我的自定义模块的.NET Framework版本从4.5.1更改为4.5.2,但没有引起任何问题。该解决方案的构建没有错误,并且我能够匿名运行和浏览该网站。日志中没有错误或警告出现。

但是,当我尝试以用户身份登录时,出现w3wp异常,并且我的本地IIS关闭。同样,在此之前不会记录任何错误。调试时,DefaultContentQuery.cs的第134行出现StackOverflowException:

var criteria = (CriteriaImpl)queryProvider.TranslateExpression(queryable.Expression);

Orchard.Users.MembershipService中一直被第137行一遍又一遍地调用,但从未解决:

return _orchardServices.ContentManager.Query<UserPart, UserPartRecord>().Where(u => u.NormalizedUserName == lowerName).List().FirstOrDefault();

我意识到这可能是我特定项目的问题,但是,有关如何进行故障排除的任何建议将不胜感激。

orchardcms
1个回答
0
投票

这在Orchard中是一个长期未解决的问题,是由用户类型上的CommonPart引起的:https://github.com/OrchardCMS/Orchard/issues/2192

当对某种内容类型执行查询时,Orchard会在某个时候为该类型的内容项创建一个新实例。这将触发与该类型关联的所有ContentHandler。调用CommonPartHandler且其OwnerId为0时,它将尝试将当前用户设置为所有者,这在登录时在GetUser()方法中发生时将导致无限循环。解决方案是从用户中删除CommonPart。类型,如果不需要的话,或者将CommonPartHandler的源代码更改为User类型的项目。

© www.soinside.com 2019 - 2024. All rights reserved.