2013-06-26 3 views
2

Наши запланированные задания начали неудачу, так как вчера со следующим сообщением об ошибке: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 также попытался создать нового пользователя, который тоже не работал. Кто-нибудь сталкивался с тем же или подобным вопросом? Любые мысли, как решить эту проблему?

+0

На всякий случай - можете ли вы обеспечить (посредством ведения журнала), что 'ApplicationSettings.ScheduledJobUsername' содержит правильное имя пользователя? Если да - можете ли вы войти в систему с этим пользователем в той же среде? Для меня это выглядит следующим образом: изменились настройки приложения (неправильный ключ пользователя/неправильный ключ) или информация пользователя изменилась в db (неактивна?) Или изменился поставщик членства – Lanorkin

+0

Я проверил это, и пользователь действителен. Я могу войти в систему как пользователь и запустить задачу вручную. Я также пробовал разные пользователи, и каждый из них не прошел с тем же исключением. – Igor

+0

Я думаю, нам нужно немного больше кода, чтобы иметь возможность просмотреть это –

ответ

1

У меня наконец-то возникла проблема - пул приложений работает с несколькими рабочими процессами (в моем случае у меня было два рабочих процесса). Как только я установил ограничение рабочих процессов на один, все снова начало работать.

+0

Ты ломаешь голову, я не вижу, как это можно подключить - ты считаешь это проблемой EPiServer? – Lanorkin

+0

Расскажите мне о разрыве ума :) Я так себя чувствовал последние семь дней. Я считаю, что Episerver 6 не работает хорошо с несколькими рабочими процессами. Я подозреваю, что запрос сделан на один рабочий процесс и завершен другой отправкой обратно пустого имени пользователя, что не приводит к ролям и не удалось CurrentPrincipal. Но это только моя теория. – Igor

Смежные вопросы