02.11.2011, 16:20 | #1 |
Участник
|
Ax2009 Запускаю пакетное задание и ошибка
И выводится ошибка
Сбой запроса на разрешение типа "InteropPermission". (S)\Classes\InteropPermission\demand (S)\Classes\DLL\new (S)\Classes\WinAPI\deleteFileOld - line 4 (S)\Reports\termPrint\Methods\saveDocument - line 6 (S)\Reports\termPrint\Methods\run - line 94 (S)\Classes\SysReportRun\run - line 35 (S)\Reports\termPeriod\Methods\run - line 13 (S)\Classes\SysReportRun\run - line 35 (S)\Classes\RunBaseReport\run - line 34 (S)\Classes\BatchRun\runJobStatic - line 63 (S)\Classes\BatchRun\runJob - line 27 (S)\Classes\BatchRun\do - line 47 (C)\Forms\BatchRun\Methods\doBatch - line 18 (C)\Forms\BatchRun\Methods\setStart - line 8 (C)\Forms\BatchRun\Methods\setRunning - line 7 (S)\Classes\BatchRun\run - line 26 (C)\Classes\BatchRun\main - line 10 Почему эта ошибка? |
|
02.11.2011, 16:27 | #2 |
Ищущий знания...
|
судя по стеку, не хватает прав на удаление файла (не хватает прав на папку где лежит файл).
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
02.11.2011, 16:34 | #3 |
Участник
|
У меня уже есть предыдущая тема, что конкретно файл не удалялся. Переделала на метод из 3.0 нормально.
Без пакетной обработки все работает. В пакете не получается. Поставила уже папку для файла на самом аос. Ошибка та же. |
|
02.11.2011, 16:40 | #4 |
Ищущий знания...
|
Цитата:
З.Ы. ещё раз переспрошу на всякий случай, у пользователя, под которым запущена служба AOS сервера, есть права на папку?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
02.11.2011, 16:42 | #5 |
Участник
|
Да, аос запускается из-под Local Service. На папку в сети дали доступ aos$ и там все права, кроме полных.
Но мне не ясно, ведь даже если выгружать файл на сам аос на диск с, то вручную работает ,а в пакете нет Только чтение не стоит. Выполняется от клиента,а про сетевую папку права, т.к. в нее копируется. АОС дали туда права, т.к. не понимаю чего с правами делать. Почему в пакете ругается. Последний раз редактировалось Arahnid; 02.11.2011 в 17:00. |
|
02.11.2011, 16:55 | #6 |
Участник
|
\Classes\WinAPI\deleteFileOld - метод не стандартной аксапты. Может быть приведете его текст ?
|
|
02.11.2011, 16:56 | #7 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Poleax (1). |
02.11.2011, 18:44 | #8 |
Участник
|
Инструкция не помогла. Смысла она не добавила мне. Разрядность аос 64 и я там пытаюсь запустить код. Серевер АПИ тоже не помогает.
Это значит зря мы поставила 64 разряда? DLL под ним не работает? |
|
02.11.2011, 22:34 | #9 |
Участник
|
Цитата:
Последний раз редактировалось gl00mie; 02.11.2011 в 22:36. |
|
03.11.2011, 00:00 | #10 |
Участник
|
У меня вопрос в том, что несмотря на все разрешения, которые он сам ставит в методе на сервере, я натыкаюсь на одну и ту же проблему
Сбой запроса на разрешение типа "FileIOPermission". (S)\Classes\FileIOPermission\demand (S)\Classes\WinAPIServer\deleteFile - line 11 |
|
03.11.2011, 09:06 | #11 |
Ищущий знания...
|
Цитата:
gl00mie писал: Цитата:
Local Service на то и local - у него нету права аутентифицироваться в сети под учеткой локального компа, поэтому выданные для aos$ права тут не сработают; надо тогда уж запускать AOS под Network Service (как он у вас к СУБД под Local Service подключается, интересно?).
P.S. если АОСов несколько, то какой именно является обработчиком пакетных заданий можно посмотреть в Администрирование \ Настройка \ Конфигурация сервера. Те сервера, у которых установлен признак "Сервер обработки пакетных заданий", обрабатывают пакеты. Соответственно учетки АОС-ов, под которым выполняют вход в систему, должны иметь права на сетевые ресурсы.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
03.11.2011, 09:47 | #12 |
Участник
|
А можно узнать назначение пакетника (назначение). Есль ли в нем runas()??
__________________
С уважением, Алексей. |
|
03.11.2011, 11:20 | #13 |
Участник
|
Запустила под Network Service - результат тот же. Прав нет.
Последний раз редактировалось Arahnid; 03.11.2011 в 11:34. |
|
04.11.2011, 12:04 | #14 |
Участник
|
А "прав нет" как выражается? Вылетает ошибка времени выполнения со стеком вызовов или же пишется предупреждение в результате отработки WinAPIServer::deleteFile() с учетом этого совета?
|
|
06.11.2011, 17:18 | #15 |
Участник
|
Ошибка выполнения получается.
А может быть такое, что эта папка находится внутри другой папки. У аос нет прав доступа на папку верхнего уровня и поэтому он так ругается? |
|
06.11.2011, 17:45 | #16 |
Участник
|
Если речь про 'Сбой запроса на разрешение типа "FileIOPermission"', то запросите, наконец, разрешение перед удалением файла Возможно, путаница возникает еще и оттого, что в самих методах WinAPIServer также фигурируют всякие FileIOPermission'ы...
Цитата:
Может, однако, по умолчанию такая проверка отключена политикой безопасности. См. Computer configuration/Windows settings/Security settings/Local policies/User rights assignment/Bypass traverse chechking. По умолчанию там фигурирует Everyone; смотреть надо либо в Resultant set of policy (апплет rsop.msc), либо, если там будет Not defined, в Local computer policy (апплет gpedit.msc). Последний раз редактировалось gl00mie; 06.11.2011 в 18:02. |
|
06.11.2011, 21:24 | #17 |
Участник
|
1,2
Делала А вот про 3 не знала. Буду смотреть. У нас с защитой все мощно перекрыто. Может в этом дело. |
|
08.11.2011, 09:16 | #18 |
MCITP
|
тоже как-то бился с данной проблемой.
Помог совет из ссылки. Ну и ,соответствующие, права у AOS были. DAX 2009 записать файл в UTF-кодировке |
|
08.11.2011, 15:02 | #19 |
MCITP
|
Если не до конца понятно объяснил, то ключевая фраза
Цитата:
Замените #io_write на 'rw'
|
|
08.11.2011, 15:22 | #20 |
Участник
|
Это уже шаманство пошло. В упомянутой теме вызывалось два метода, каждый из которых требовал наличия различного разрешения, здесь же вызывается лишь WinAPIServer::deleteFile(), в коде которого вполне однозначно написано, наличие какого разрешения он проверяет:
X++: // check file I/O permission fileIOPerm = new FileIOPermission(_fileName,'w'); fileIOPerm.demand(); |
|