升级到 1.10.3 的网站在 UserPart ContentQuery 上抛出 StrackOverflowException。如何排除故障?
Website upgraded to 1.10.3 throws StrackOverflowException on UserPart ContentQuery. How to troubleshoot?
我继承了一个从 1.6 版开始的 Orchard 项目,随后顺利升级到 1.7、1.8、1.9 和 1.9.3。我现在已采取措施升级到 1.10.3。这涉及将我的自定义模块的 .NET 框架版本从 4.5.1 更改为 4.5.2,但没有引起任何问题。该解决方案构建无误,我能够 运行 并匿名浏览网站。日志中没有出现错误或警告。
但是,当我尝试以用户身份登录时,出现 w3wp 异常并且我的本地 IIS 出现故障。同样,在此之前不会记录任何错误。调试时,DefaultContentQuery.cs
:
的第134行出现WhosebugException
var criteria = (CriteriaImpl)queryProvider.TranslateExpression(queryable.Expression);
Orchard.Users.MembershipService
中的第 137 行不断调用它,但从未解决:
return _orchardServices.ContentManager.Query<UserPart, UserPartRecord>().Where(u => u.NormalizedUserName == lowerName).List().FirstOrDefault();
我意识到这可能是我的特定项目的问题,但如果您能提供有关如何进行故障排除的任何建议,我们将不胜感激。
事实证明这是 Orchard 中一个长期未解决的问题,原因是在用户类型上有一个 CommonPart:https://github.com/OrchardCMS/Orchard/issues/2192。
当针对特定内容类型执行查询时,Orchard 会在某个时刻创建该类型内容项的新实例。这会触发与该类型关联的所有 ContentHandler。当调用 CommonPartHandler 且其 OwnerId 为 0 时,它会尝试将当前用户设置为所有者,这会在登录时的 GetUser() 方法中发生无限循环。解决方案是从您的用户中删除 CommonPart type,如果你不需要它,或者将 CommonPartHandler 的源代码更改为 User 类型的项目。
我继承了一个从 1.6 版开始的 Orchard 项目,随后顺利升级到 1.7、1.8、1.9 和 1.9.3。我现在已采取措施升级到 1.10.3。这涉及将我的自定义模块的 .NET 框架版本从 4.5.1 更改为 4.5.2,但没有引起任何问题。该解决方案构建无误,我能够 运行 并匿名浏览网站。日志中没有出现错误或警告。
但是,当我尝试以用户身份登录时,出现 w3wp 异常并且我的本地 IIS 出现故障。同样,在此之前不会记录任何错误。调试时,DefaultContentQuery.cs
:
var criteria = (CriteriaImpl)queryProvider.TranslateExpression(queryable.Expression);
Orchard.Users.MembershipService
中的第 137 行不断调用它,但从未解决:
return _orchardServices.ContentManager.Query<UserPart, UserPartRecord>().Where(u => u.NormalizedUserName == lowerName).List().FirstOrDefault();
我意识到这可能是我的特定项目的问题,但如果您能提供有关如何进行故障排除的任何建议,我们将不胜感激。
事实证明这是 Orchard 中一个长期未解决的问题,原因是在用户类型上有一个 CommonPart:https://github.com/OrchardCMS/Orchard/issues/2192。
当针对特定内容类型执行查询时,Orchard 会在某个时刻创建该类型内容项的新实例。这会触发与该类型关联的所有 ContentHandler。当调用 CommonPartHandler 且其 OwnerId 为 0 时,它会尝试将当前用户设置为所有者,这会在登录时的 GetUser() 方法中发生无限循环。解决方案是从您的用户中删除 CommonPart type,如果你不需要它,或者将 CommonPartHandler 的源代码更改为 User 类型的项目。