AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.01.2009, 14:20   #1  
Corel is offline
Corel
Участник
Ex AND Project
 
73 / 15 (1) ++
Регистрация: 19.04.2007
? Критическая ошибка RunAs
Аксапта 4.0 (4.0.2501)
При запуске пакетной обработки вылезает сообщение в инфолог: "Критическая ошибка RunAs".
Возникает здесь: \Classes\BatchRun\runJob
X++:
        if (batchClass.runsImpersonated())
        {
            // Ok to assert here because the user name comes from
            // the batch table
            runAsPermission = new RunAsPermission(batch.CreatedBy);
            runAsPermission.assert();
            // BP Deviation Documented
            runas(batch.CreatedBy,
                classnum(BatchRun),
                staticmethodstr(BatchRun, runJobStatic),
                [batchId]);

            CodeAccessPermission::revertAssert();
        }
А точнее - тут: runas(batch.CreatedBy,
classnum(BatchRun),
staticmethodstr(BatchRun, runJobStatic),
[batchId]);

Вроде бы стандартный класс, написан на sys и syp слоях, незадолго до этого пакетная обработка тестировалась и работала, а тут на тебе.
Нет идей, как это можно вылечить?
Старый 30.01.2009, 17:33   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Я бы сделал следующее.

1. Научился гарантировано воспроизводить на разработческой базе или на копии базы.
2. Временно убрал бы RunAs и попытался воспроизвести ошибку без него (возможно, залогонившись под пользователем-автором пакета, добавив ему прав на разработку аккуратно, но не полные админские, т.к. причиной ошибки могут быть и права доступа).
3. Дебагером добрался бы до сути ошибки.

Дальше, как говорится, it depends...
__________________
С уважением,
glibs®
Старый 30.01.2009, 17:52   #3  
Corel is offline
Corel
Участник
Ex AND Project
 
73 / 15 (1) ++
Регистрация: 19.04.2007
Дебаггер туда не залезает.
Ошибка возникает так:
1) Запускается пакетная обработка. Она находит класс, в котором вылетает в трассировку стерка (в данном случае - нашёлся класс, у которого был некорректно определён unpack() ).
2) После этого любая пакетная обработка даёт критическую ошибку RunAs, описанную выше.
Вылечилось рестартом АОС. Более мягкого способа не нашёл.
Старый 02.02.2009, 18:21   #4  
Corel is offline
Corel
Участник
Ex AND Project
 
73 / 15 (1) ++
Регистрация: 19.04.2007
Чёрт, третий день шаманю вокруг этого...
При запуске пакетной обработки (класс BatchRun) или же просто изменения основных оповещений (класс EventJobCUD) вылетает на runAs...
Заменил на обычный вызов методов - работает, но думаю, что это не совсем корректно. Но отчего же runAs-то не отрабатывают?
За это сообщение автора поблагодарили: Maksim (1), wojzeh (1).
Старый 20.11.2009, 00:47   #5  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
столкнулся с точно такой же проблемой.

если в методе класса BatchRun

X++:
    if (batchClass.runsImpersonated())
        {
            // Ok to assert here because the user name comes from
            // the batch table
            runAsPermission = new RunAsPermission(batch.CreatedBy);
            runAsPermission.assert();
            // BP Deviation Documented
            runas(batch.CreatedBy,
                classnum(BatchRun),
                staticmethodstr(BatchRun, runJobStatic),
                [batchId]);

            CodeAccessPermission::revertAssert();
        }
        else
        {
            BatchRun::runJobStatic([batchId]);
        }
сделать так, чтоб переходили на ветку else, то в её недрах виден некий лишенец в поле Event.UserId, из-за которого и происходит исключительная ситуация.

проблему поборол очисткой таблицы EventCUD, но какая связь между ид пользователя, породившим событие и пакетной обработкой, я так и не понял.
__________________
Felix nihil admirari
Старый 09.02.2010, 00:03   #6  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
коллега, удалось ли забороть проблему?
__________________
Felix nihil admirari
Старый 09.02.2010, 12:41   #7  
Maximin is offline
Maximin
NavAx
NavAx Club
 
412 / 346 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Я заметил, что у меня подобная ошибка возникает только на пакетной группе, обрабатывающей оповещения и только если АОС, на котором работает клиент с этой пакетной группой, закрыт для новых подключений.
Могу также предположить, что так же это связано с какими-то неполадками в настройке домена/службах аутентификации, либо необходимостью доаствить оповещение пользователю, который уже не имеет прав в домене для входа в Аксапту/либо вообще отключен. Неплохо было бы в системный лог посмотреть.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Старый 09.02.2010, 14:44   #8  
Maximin is offline
Maximin
NavAx
NavAx Club
 
412 / 346 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Расшифровывая вышесказанное мной, хочется написать чуть подробней.

Это еще зависит от того, кто создал пакетное задание, обрабатывающее оповещения и того, что пакетный класс EventJobCUD имеет перекрытый метод runsImpersonated с ret=-true. Это указывает запускать пакет на сервере от имени создавшего его пользователя. Если с этим пользователем на сервере плохо то выполнение пакета обломится.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Теги
runsimpersonated, пакетное задание

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Критическая ошибка Axapta 3.0 SP3 CIS andy.l DAX: Администрирование 8 22.10.2008 13:58
Критическая ошибка и на чё смотреть miklenew DAX: Программирование 0 07.05.2008 16:06
Критическая ошибка при закрытии формы gefr DAX: Программирование 8 22.08.2007 12:23
Критическая ошибка при вызове ранее настроенной формы tolstjak DAX: Администрирование 5 11.04.2007 09:51
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:22.