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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.10.2010, 17:27   #1  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
? WinAPI::fileExists()
Какой аналог метода \Classes\WinAPI\fileExists есть в Ax2009?

Чтоб его можно было спокойно вызвать на стороне сервера.

Смена опции RunOn у класса в WinAPI на Called from не катит.

Требуется проверить существует ли файл.
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 15.10.2010, 17:38   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
WinAPIServer::fileExists()?
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Poleax (1).
Старый 15.10.2010, 17:47   #3  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от AndyD Посмотреть сообщение
WinAPIServer::fileExists()?
хм
Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\fileExists - line 14
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 15.10.2010, 17:50   #4  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
помню тоже наткнулся на такую особенность. Пришлось во всём своём коде покопаться чтобы заткнуть возникшие из-за этого ошибки.
Есть кстати методы в WinAPI, которые мне нужно было использовать на стороне сервера, но аналогов которым в WinAPIServer я не нашёл. Например, fileLocked().
__________________
Дмитрий
Старый 15.10.2010, 17:54   #5  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от Poleax Посмотреть сообщение
хм
Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\fileExists - line 14
ну так ведь надо юзать что-то типа
X++:
                fileIOPermission = new FileIOPermission( fileName,'r');
                fileIOPermission.assert();
каждый раз перед вызовом WinAPIServer::fileExists()
__________________
Дмитрий
За это сообщение автора поблагодарили: Poleax (1).
Старый 15.10.2010, 17:55   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
без FileIOPermission работает
__________________
Axapta v.3.0 sp5 kr2
Старый 15.10.2010, 17:59   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
С assert() будет ругаться на его множественный вызов.

Там вообще непонятно, зачем нужен FileIOPermission - ведь обращение к файлу идет уже в сборке, которой это не нужно
__________________
Axapta v.3.0 sp5 kr2
Старый 15.10.2010, 18:10   #8  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от Damn Посмотреть сообщение
ну так ведь надо юзать что-то типа
X++:
                fileIOPermission = new FileIOPermission( fileName,'r');
                fileIOPermission.assert();
каждый раз перед вызовом WinAPIServer::fileExists()
Все ок
X++:
        new FileIOPermission(Filename,'r').assert();
        if(!WinAPIServer::fileExists(Filename))
             continue;
        CodeAccessPermission::revertAssert();
однако \System Documentation\Classes\FileIOPermission

Вопрос закрыт.
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 25.10.2010, 15:22   #9  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Post
Заметка, не совсем по теме, но про доступ к нескольким файлам.

Error: Multiple calls to CodeAccessPermission.Assert

1) //http://msdn.microsoft.com/en-us/library/aa609747.aspx
2) Dynamics AX Writing Secure X++ Code
X++:
void copyFile(str fromfile , str tofile )
{
    Set permissionSet;
    ;
    
    if(isRunningOnServer())
    {
        permissionSet =  new Set(Types::Class);
        permissionSet.add(new FileIoPermission(fromfile,'r'));
        permissionSet.add(new FileIoPermission(tofile,'w'));
        CodeAccessPermission::assertMultiple(permissionSet);

        WinAPIServer::copyFile(fromfile, tofile, true);

        CodeAccessPermission::revertAssert();
    }
    else
    {
        WinAPI::copyFile(fromfile, tofile, true);
    }
}
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
За это сообщение автора поблагодарили: Damn (2), sukhanchik (1), Андрей К. (1), Molchun (1).
Старый 25.10.2010, 17:08   #10  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от Poleax Посмотреть сообщение
Какой аналог метода \Classes\WinAPI\fileExists есть в Ax2009?
В AX2009 давно пора .Net использовать

X++:
public static server boolean fileExists(str _filePath)
{
    boolean ret;
    ;
    new InteropPermission(InteropKind::ClrInterop).assert();
    ret = System.IO.File::Exists(_filePath);
    CodeAccessPermission::revertAssert();
    return ret;
}
За это сообщение автора поблагодарили: Damn (2).
Старый 25.10.2010, 17:50   #11  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от Poleax Посмотреть сообщение
Чтоб его можно было спокойно вызвать на стороне сервера.
DAX 4. Буквально на днях столкнулись с этим же, что при исполнении на стороне сервера возникает ошибка доступа. Помог перенос данного метода из своего класса в класс Global.
Старый 25.10.2010, 18:21   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
В AX2009 давно пора .Net использовать

X++:
public static server boolean fileExists(str _filePath)
{
    boolean ret;
    ;
    new InteropPermission(InteropKind::ClrInterop).assert();
    ret = System.IO.File::Exists(_filePath);
    CodeAccessPermission::revertAssert();
    return ret;
}
WinApi::FileExists() и WinApiServer::FileExists() как раз таки и используют System.IO.File::Exists()
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Poleax (1).
Теги
code access security, fileiopermission, security, winapi, безопасность

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX Geek: Finding files with WinAPI Blog bot DAX Blogs 1 08.10.2009 17:36
Axapta WinAPI::SewWindow... кто знает как? UNRW DAX: Программирование 2 26.09.2008 15:28
Dynamics AX Geek: Finding files with WinAPI Blog bot DAX Blogs 0 28.10.2006 16:40
WinAPI::getLastError() DreamCreator DAX: Программирование 4 20.06.2005 10:03
WinApi. Удаление файлов глючит. NJD DAX: Программирование 10 05.12.2003 13:31

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:15.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.