Наши запланированные задания начали неудачу, так как вчера со следующим сообщением об ошибке:EPiServer по расписанию Работа оказалась неудачной (услуга планировщика)
CustomUpdate.Execute - System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в System.Web.Security.Roles.GetRolesForUser (String имя пользователя) на EPiServer.Security.PrincipalInfo.CreatePrincipal (String имя пользователя)
Запланированное задание использует анонимный выполнение и журналы в программно, используя следующий вызов:
if (PrincipalInfo.CurrentPrincipal.Identity.Name == string.Empty)
{
PrincipalInfo.CurrentPrincipal = PrincipalInfo.CreatePrincipal(ApplicationSettings.ScheduledJobUsername);
}
Я поставил в некоторых более протоколирования вокруг PrincipalInfo.CreatePrincipal вызова, который находится в Episerver.Security и заметил, что PrincipalInfo.CreatePrincipal называет System.Web.Security.Roles.GetRolesForUser (имя пользователя) и Roles.GetRolesForUser (имя пользователя) возвращает пустой массив строк. Не было изменений кода или на сервере (обновления и т. Д.). Я проверил, что имя пользователя, используемое для запуска задачи, находится в базе данных и имеет связанные с ней роли. Я проверил, что имя приложения настроено правильно и связано с пользователем Если я запускаю задание вручную с использованием того же пользователя, он выполняет без проблем (я знаю, что существует разница между запуском задания вручную и использованием планировщика) I также попытался создать нового пользователя, который тоже не работал. Кто-нибудь сталкивался с тем же или подобным вопросом? Любые мысли, как решить эту проблему?
На всякий случай - можете ли вы обеспечить (посредством ведения журнала), что 'ApplicationSettings.ScheduledJobUsername' содержит правильное имя пользователя? Если да - можете ли вы войти в систему с этим пользователем в той же среде? Для меня это выглядит следующим образом: изменились настройки приложения (неправильный ключ пользователя/неправильный ключ) или информация пользователя изменилась в db (неактивна?) Или изменился поставщик членства – Lanorkin
Я проверил это, и пользователь действителен. Я могу войти в систему как пользователь и запустить задачу вручную. Я также пробовал разные пользователи, и каждый из них не прошел с тем же исключением. – Igor
Я думаю, нам нужно немного больше кода, чтобы иметь возможность просмотреть это –