Как назначить несколько конкретных ролей в одном пользователе с помощью массовой загрузки пользователей?
В kentico 10 мы используем массовую загрузку пользователей из excel, имя поля-Username, Email, fname, lname, Role1, Role2 и Role3.
Пользователь будет вставлять работу нормально.
Но роли не вставляются. Если я отлажу код, курсор не будет находиться внутри условия if.
Что я уже пробовал:
private UserInfo CreateUser(UserDto userDto, SiteInfo site) { var newUser = new UserInfo { UserName = userDto.UserName, UserEnabled = true, FirstName = userDto.FirstName, LastName = userDto.LastName, FullName = userDto.FirstName + " " + userDto.LastName, Email = userDto.Email, SiteIndependentPrivilegeLevel = CMS.Base.UserPrivilegeLevelEnum.None }; var newUserSettings = newUser.UserSettings ?? new UserSettingsInfo(); UserInfoProvider.SetPassword(newUser, userDto.UserPassword); newUserSettings.UserPhone = userDto.PhoneNumber; // var role = new RoleProvider().GetAllRoles(site.SiteID); // .FirstOrDefault(r => r.Description == userDto.Role1); UserInfoProvider.SetUserInfo(newUser); UserInfoProvider.AddUserToSite(newUser.UserName, site.SiteName); // var rolelist = userDto.Role1 ?? $"{userDto.Role2} {userDto.Role3}"; var rolelist = new[] { $"{userDto.Role1}", userDto.Role2, userDto.Role3} .Where(af => !string.IsNullOrWhiteSpace(af)); foreach (var u in rolelist) { List<string> userRoles = new List<string> { userDto.Role1, userDto.Role2, userDto.Role3 }; foreach (string r in userRoles) { var roles = RoleInfoProvider.GetRoles().WhereEquals("LOWER(RoleDescription)", r.ToLower()).FirstOrDefault(); if (userRoles != null) { UserInfoProvider.AddUserToRole(newUser.UserID, roles.RoleID); } } } return newUser; }
Richard MacCutchan
Вам нужно использовать отладчик, чтобы узнать, что происходит. Без ваших входных данных невозможно понять, почему это не удается.
Member 14557688
В переменной if (roles != null) roles появляется нулевое значение
Richard MacCutchan
Ну, это довольно очевидно, но это не помогает выяснить, почему. Как я уже предположил, вам нужно использовать отладчик, чтобы выяснить, почему. Пройдитесь по коду и проверьте переменные, которые используются для заполнения списка, чтобы понять, почему ни одна из них не выбрана.
Richard Deeming
У тебя же нет ... if (roles != null)
строка в вашем коде.
У тебя есть if (userRoles != null)
- это опечатка в вашем вопросе или опечатка в вашем коде?