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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2011, 16:20   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
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  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
судя по стеку, не хватает прав на удаление файла (не хватает прав на папку где лежит файл).
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 02.11.2011, 16:34   #3  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
У меня уже есть предыдущая тема, что конкретно файл не удалялся. Переделала на метод из 3.0 нормально.
Без пакетной обработки все работает. В пакете не получается.
Поставила уже папку для файла на самом аос. Ошибка та же.
Старый 02.11.2011, 16:40   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Arahnid Посмотреть сообщение
У меня уже есть предыдущая тема, что конкретно файл не удалялся. Переделала на метод из 3.0 нормально.
Без пакетной обработки все работает. В пакете не получается.
Поставила уже папку для файла на самом аос. Ошибка та же.
мой совет из соседней ветки пробовали?

З.Ы. ещё раз переспрошу на всякий случай, у пользователя, под которым запущена служба AOS сервера, есть права на папку?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 02.11.2011, 16:42   #5  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Да, аос запускается из-под Local Service. На папку в сети дали доступ aos$ и там все права, кроме полных.
Но мне не ясно, ведь даже если выгружать файл на сам аос на диск с, то вручную работает ,а в пакете нет

Только чтение не стоит.
Выполняется от клиента,а про сетевую папку права, т.к. в нее копируется. АОС дали туда права, т.к. не понимаю чего с правами делать. Почему в пакете ругается.

Последний раз редактировалось Arahnid; 02.11.2011 в 17:00.
Старый 02.11.2011, 16:55   #6  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 429 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
\Classes\WinAPI\deleteFileOld - метод не стандартной аксапты. Может быть приведете его текст ?
Старый 02.11.2011, 16:56   #7  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
  1. Local Service на то и local - у него нету права аутентифицироваться в сети под учеткой локального компа, поэтому выданные для aos$ права тут не сработают; надо тогда уж запускать AOS под Network Service (как он у вас к СУБД под Local Service подключается, интересно?).
  2. Если код удаления файла вызывается на сервере, то надо использовать не WinAPI, а WinAPIServer.
  3. Для работы с файлами на сервере надо предварительно запрашивать разрешение, например:
    X++:
    #macrolib.File
    new FileIOPermission(fileName, #io_write).assert();
    WinAPIServer::deleteFile(fileName);
Судя по стеку вызовов, код WinAPI::deleteFileOld() пытается дернуть функцию DLL - на это тоже нужно на сервере запрашивать разрешение, НО если используется 64-битный AOS, то загрузить стороннюю DLL и дернуть ее экспортированную функцию не получится, см. Using the DLLFunction kernel class on a 64bit Dynamics AX 2009 AOS. Вообще же стоит ознакомиться с Dynamics AX Writing Secure X++ Code
За это сообщение автора поблагодарили: Poleax (1).
Старый 02.11.2011, 18:44   #8  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Инструкция не помогла. Смысла она не добавила мне. Разрядность аос 64 и я там пытаюсь запустить код. Серевер АПИ тоже не помогает.
Это значит зря мы поставила 64 разряда? DLL под ним не работает?
Старый 02.11.2011, 22:34   #9  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Arahnid Посмотреть сообщение
Инструкция не помогла. Смысла она не добавила мне. Разрядность аос 64 и я там пытаюсь запустить код. Серевер АПИ тоже не помогает.
Это значит зря мы поставила 64 разряда? DLL под ним не работает?
Если про Writing Secure X++ Code, то это не инструкция, а, скорее, обсуждение того, как теперь использовать определенные API. В общем, по пунктам:
  • при выполнении на сервере надо использовать WinAPIServer
  • практически каждый метод этого класса требует определенного разрешения, которое надо запросить перед его вызовом; в каждом методе написано в комментариях, какое именно разрешение ему нужно
  • чтобы АОС мог получить доступ к сетевым ресурсам, к которым нет анонимного доступа, он должен запускаться либо под доменной учетной записью, либо хотя бы под Network Service
  • на 64-битном АОСе не получится использовать DLLFunction - вероятно, это одна из причин, почему WinAPIServer переписан на .NET
64-битный АОС поставили не зря - забудете про нехватку сессиям памяти, но от использования DLL придется отказаться в пользу .NET

Последний раз редактировалось gl00mie; 02.11.2011 в 22:36.
Старый 03.11.2011, 00:00   #10  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
У меня вопрос в том, что несмотря на все разрешения, которые он сам ставит в методе на сервере, я натыкаюсь на одну и ту же проблему

Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\deleteFile - line 11
Старый 03.11.2011, 09:06   #11  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Arahnid Посмотреть сообщение
У меня вопрос в том, что несмотря на все разрешения, которые он сам ставит в методе на сервере, я натыкаюсь на одну и ту же проблему

Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\deleteFile - line 11
по прежнему не хватает прав

gl00mie писал:
Цитата:
Local Service на то и local - у него нету права аутентифицироваться в сети под учеткой локального компа, поэтому выданные для aos$ права тут не сработают; надо тогда уж запускать AOS под Network Service (как он у вас к СУБД под Local Service подключается, интересно?).
Вы пробовали поменять учетку входа в систему для сервиса АОСа?

P.S. если АОСов несколько, то какой именно является обработчиком пакетных заданий можно посмотреть в Администрирование \ Настройка \ Конфигурация сервера. Те сервера, у которых установлен признак "Сервер обработки пакетных заданий", обрабатывают пакеты. Соответственно учетки АОС-ов, под которым выполняют вход в систему, должны иметь права на сетевые ресурсы.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 04.11.2011, 12:04   #12  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
А "прав нет" как выражается? Вылетает ошибка времени выполнения со стеком вызовов или же пишется предупреждение в результате отработки WinAPIServer::deleteFile() с учетом этого совета?
Старый 06.11.2011, 17:18   #13  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Ошибка выполнения получается.
А может быть такое, что эта папка находится внутри другой папки. У аос нет прав доступа на папку верхнего уровня и поэтому он так ругается?
Старый 06.11.2011, 17:45   #14  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Arahnid Посмотреть сообщение
Ошибка выполнения получается.
Если речь про 'Сбой запроса на разрешение типа "FileIOPermission"', то запросите, наконец, разрешение перед удалением файла Возможно, путаница возникает еще и оттого, что в самих методах WinAPIServer также фигурируют всякие FileIOPermission'ы...
Цитата:
Сообщение от Arahnid Посмотреть сообщение
несмотря на все разрешения, которые он сам ставит в методе на сервере, я натыкаюсь на одну и ту же проблему
Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\deleteFile - line 11
Код WinAPIServer по больше части не "ставит"/запрашивает разрешения - он проверяет их наличие. Стоит обратить внимание на то, что внутри WinAPIServer::deleteFile() вызывается метод FileIOPermission.demand(), т.е. проверка (требование) того, что соотв. разрешение уже получено. В вызывающем же коде до WinAPIServer::deleteFile() надо вызывать метод FileIOPermission.assert(), т.е. запрашивать соотв. разрешение, наличие которого будет затем проверено в методе WinAPIServer; пример был здесь.
Цитата:
Сообщение от Arahnid Посмотреть сообщение
А может быть такое, что эта папка находится внутри другой папки. У аос нет прав доступа на папку верхнего уровня и поэтому он так ругается?
Может, однако, по умолчанию такая проверка отключена политикой безопасности. См. 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   #15  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
1,2
Делала

А вот про 3 не знала. Буду смотреть. У нас с защитой все мощно перекрыто. Может в этом дело.
Старый 08.11.2011, 09:16   #16  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
тоже как-то бился с данной проблемой.
Помог совет из ссылки.
Ну и ,соответствующие, права у AOS были.
DAX 2009

записать файл в UTF-кодировке
Старый 08.11.2011, 15:22   #17  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Это уже шаманство пошло. В упомянутой теме вызывалось два метода, каждый из которых требовал наличия различного разрешения, здесь же вызывается лишь WinAPIServer::deleteFile(), в коде которого вполне однозначно написано, наличие какого разрешения он проверяет:
X++:
// check file I/O permission
fileIOPerm = new FileIOPermission(_fileName,'w');
fileIOPerm.demand();
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009, ошибка установки корпоративного портала. abri DAX: Администрирование 4 04.03.2011 15:24
Ошибка при работе с binary в Ax2009 someOne DAX: Программирование 2 08.11.2010 10:04
Пакетное задание в статусе "Выполнение" висит больше 4 дней. Poleax DAX: Функционал 4 19.08.2010 14:11
Ошибка при установке корпоративного портала ax2009, ошибка доступа Antant DAX: Администрирование 0 11.09.2009 09:28
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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