Почему WorkContext.CurrentUser всегда равен нулю?

Я работаю над модулем Orhcard, и мне нужно получить идентификатор текущего пользователя. Я перепробовал все, что мог найти в Google, но ничего не помогло. CurrentUser просто всегда равен нулю. Вот последние вещи, которые я пробовал

public MyWidgetDriver(IWidgetService widgetService, 
            IAuthenticationService authenticationService,RequestContext requestContext,
            IWorkContextAccessor workContextAccessor, IOrchardServices orchSvc)
        {

            var a = authenticationService.GetAuthenticatedUser();
            var b = orchSvc.WorkContext.CurrentUser;
            var c = workContextAccessor.GetContext().CurrentUser;

        }

a,b & c все равны нулю. Я могу получить имя пользователя из HttpContext.User, но мне нужен идентификатор. пользователь вошел в систему. Я пробовал различные учетные записи и типы учетных записей. Я вижу, что другие части, которые работают с пользователем, работают и способны показывать имя пользователя через WorkContext.

Что мне не хватает?

1 ответ

Решение

Похоже, вы пытаетесь получить к нему доступ из конструктора. Вы должны на самом деле правильно внедрить эти услуги перед их использованием. Так...

private readonly IOrchardServices _orchardServices;

public MyWidgetDriver(IOrchardServices orchardServices) {
 _orchardServices = orchardServices;
}

public DriverResult Display(...) {
 var b = _orchardServices.WorkContext.CurrentUser;
 var id = b.Id;
}
Другие вопросы по тегам