|
11.06.2007, 13:18 | #1 |
Участник
|
блин, чета не получается у меня решить задачу с использованием SysFileDeployer. В общем у меня проблема такая - DAX4.0 )))))
Короче сделал как там и описали (в смысле пока хотел посмореть как скопируются у меня файл \\axapta\40\NATApplication\Share\Include\addInsBut.bmp): 1. необходимый для копирования файл разместил на сервере в папке \\axapta\40\NATApplication\Share\Include (именно на папкуC:\Program Files\Microsoft Dynamics AX\40\NATApplication натравлен AOS), данной папке дал полный доступ для всех, а так же копируемому файлу в этой папке и на клиенте ресурсу «C:\Program Files\Microsoft Dynamics AX\40\Client\Share\Include» установил полное разрешение для всех (вкладка «безопасность» в свойствах файлов и папок). 2. написал класс-наследник от SysFileDeploymentFile, в нем перекрыл методы destinationPath и filename, в которых указал путь (return xInfo::directory(DirectoryType::Include) и имя файла (return 'addInsBut.bmp' 3. в методе SysFileDeployer.filesToDeploy возвращаю контейнер к котором указан описанный выше класс (classNum(имя_класса)) при пошаговой отладке запуска клиента, вижу что в методе SysFileDeployer.main проверка if (!sysFileDeployer.parmUpToDate() && !sysFileDeployer.isUptodate() && sysFileDeployer.prompt()) обрывается на первом же !sysFileDeployer.parmUpToDate() (возвращает истину) вообщем при комментировании данной проверки if (/*!sysFileDeployer.parmUpToDate() &&*/ !sysFileDeployer.isUptodate() && sysFileDeployer.prompt()) получается ошибка уже в !sysFileDeployer.isUptodate() – вообщем при отладке дохожу при проверке версии файла (даты модификации) до info.add(), в нем _txt = «Сбой запроса на разрешение типа "FileIOPermission". (S)\Classes\FileIOPermission\demand (S)\Classes\WinAPIServer\createFile - line 26 (S)\Classes\WinAPIServer\getFileDate - line 13 (S)\Classes\WinAPIServer\getFileModifiedDate - line 10 (S)\Classes\SysFileDeploymentFile\serverVersion - line 5 (S)\Classes\SysFileDeploymentFile\parmServerVersion - line 4 (S)\Classes\SysFileDeployment\getServerVersion - line 5 (S)\Classes\SysFileDeployer\filesAndVersions - line 17 (C)\Classes\SysFileDeployer\isUptodate - line 3 (C)\Classes\SysFileDeployer\main - line 8 (C)\Classes\Info\startup - line 30» И в данном методе переменная _sysInfoAction=null… В общем, работа прекращается при проверке !sysFileDeployer.isUptodate() ошибкой «Сбой запроса на разрешение типа "FileIOPermission". (S)\Classes\FileIOPermission\demand (S)\Classes\WinAPIServer\createFile - line 26 (S)\Classes\WinAPIServer\getFileDate - line 13 (S)\Classes\WinAPIServer\getFileModifiedDate - line 10 (S)\Classes\SysFileDeploymentFile\serverVersion - line 5 (S)\Classes\SysFileDeploymentFile\parmServerVersion - line 4 (S)\Classes\SysFileDeployment\getServerVersion - line 5 (S)\Classes\SysFileDeployer\filesAndVersions - line 17 (C)\Classes\SysFileDeployer\isUptodate - line 3 (C)\Classes\SysFileDeployer\main - line 8 (C)\Classes\Info\startup - line 30» -------------------------------------------------------- Выясняется что в методе Info.addв следующей строке if (!_sysInfoAction && !_helpUrl && hasSecuritykeyAccess(securitykeynum(SysDevelopment), AccessType::View)) { session = new xSession(); if(session.clientKind() == ClientType::Client) { _sysInfoAction = SysInfoAction_Editor::newStack(); } } Метод SysInfoAction_Editor::newStack() возвращает null… ------------------------------------------------- кстати, в метод info.add() курсор каким-то чудом переходит сразу после кода в методе WinAPIServer.createfile // check file I/O permission if(_flags == #OPEN_EXISTING) { fileIOPerm = new FileIOPermission(_fileName,'r'); } else { fileIOPerm = new FileIOPermission(_fileName,'w'); } fileIOPerm.demand(); данный кусок я закомментировал и только после этого вроде как при входе аксапта спрашивает "В клиентской установке отсутствуют файлы, необходимые для работы Microsoft Dynamics", при подтверждении установки возникает ошибка: Сбой запроса на разрешение типа "FileIOPermission". (S)\Classes\FileIOPermission\demand (S)\Classes\BinData\loadFile (S)\Classes\SysFileDeployment\getServerFile - line 15 (C)\Classes\SysFileDeployment\copy - line 4 (C)\Classes\SysFileDeployment\run - line 7 (C)\Classes\SysFileDeployer\run - line 26 (C)\Classes\SysFileDeployer\main - line 9 (C)\Classes\Info\startup - line 30 уже не знаю куда дальше копать... ((((( |
|
12.06.2007, 04:05 | #2 |
Участник
|
SysFileDeployment* FIX
Цитата:
Сообщение от ZhanR
блин, чета не получается у меня решить задачу с использованием SysFileDeployer. В общем у меня проблема такая - DAX4.0
при отладке дохожу при проверке версии файла (даты модификации) до info.add(), в нем _txt = «Сбой запроса на разрешение типа "FileIOPermission". кстати, в метод info.add() курсор каким-то чудом переходит сразу после кода в методе WinAPIServer.createfile Цитата:
Цитата:
Теперь ведь в AX4 использовать для работы на сервере «опасные API» просто так нельзя - надо явно запрашивать разрешения на это Цитата:
Implementing Code Access Security
Code access security must be implemented by the dangerous API owner and all consumers of the dangerous API. 1. The owner secures the dangerous API by implementing a specific type of permission class and calling the demand() method on that class 2. Each API consumer must explicitly request permission to invoke a secured dangerous API by calling the assert() method on the permission class. Application code will break unless both of these steps are completed.
Последний раз редактировалось gl00mie; 12.06.2007 в 04:11. Причина: форматирование :) |
|
|
За это сообщение автора поблагодарили: mazzy (15), belugin (5), kashperuk (10), alex55 (1). |
Теги |
tabax, taskbar, toolbar, инструменты, панель задач, панель инструментов, полезное, табакс, тулбар, управление окнами |
|
|