也许缺少 using 语句?
试试下面的代码:
@using Orchard.ContentManagement
@{
var roles = WorkContext.CurrentUser.As<Orchard.Roles.Models.UserRolesPart>().Roles;
}
编辑 1
似乎用户未通过身份验证。上面发布的代码行创建了以下调用:
Orchard.Environment.WorkContextImplementation.GetState("CurrentUser")
Orchard.Environment.WorkContextImplementation.FindResolverForState("CurrentUser")
- 通过一个列表进行枚举
IWorkContextStateProvider
,在这个列表中应该有以下实现:Orchard.Security.CurrentUserWorkContext
Orchard.Security.CurrentUserWorkContext.Get("CurrentUser")
IAuthenticationService.GetAuthenticatedUser()
-> 认证后返回用户
因此,似乎这些步骤中的任何一个都在没有用户的情况下返回。我建议您在其中创建一个断点Orchard.Environment.WorkContextImplementation.GetState()
以找出问题所在。