15.10.2010, 17:27 | #1 |
Модератор
|
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 |
Участник
|
WinAPIServer::fileExists()?
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Poleax (1). |
15.10.2010, 17:47 | #3 |
Модератор
|
хм
Сбой запроса на разрешение типа "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 |
Участник
|
помню тоже наткнулся на такую особенность. Пришлось во всём своём коде покопаться чтобы заткнуть возникшие из-за этого ошибки.
Есть кстати методы в WinAPI, которые мне нужно было использовать на стороне сервера, но аналогов которым в WinAPIServer я не нашёл. Например, fileLocked().
__________________
Дмитрий |
|
15.10.2010, 17:54 | #5 |
Участник
|
Цитата:
X++: fileIOPermission = new FileIOPermission( fileName,'r'); fileIOPermission.assert();
__________________
Дмитрий |
|
|
За это сообщение автора поблагодарили: Poleax (1). |
15.10.2010, 17:55 | #6 |
Участник
|
без FileIOPermission работает
__________________
Axapta v.3.0 sp5 kr2 |
|
15.10.2010, 17:59 | #7 |
Участник
|
С assert() будет ругаться на его множественный вызов.
Там вообще непонятно, зачем нужен FileIOPermission - ведь обращение к файлу идет уже в сборке, которой это не нужно
__________________
Axapta v.3.0 sp5 kr2 |
|
15.10.2010, 18:10 | #8 |
Модератор
|
Цитата:
X++: new FileIOPermission(Filename,'r').assert(); if(!WinAPIServer::fileExists(Filename)) continue; CodeAccessPermission::revertAssert(); Вопрос закрыт.
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
25.10.2010, 15:22 | #9 |
Модератор
|
Заметка, не совсем по теме, но про доступ к нескольким файлам.
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 |
Участник
|
В 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 |
Участник
|
|
|
25.10.2010, 18:21 | #12 |
Участник
|
WinApi::FileExists() и WinApiServer::FileExists() как раз таки и используют System.IO.File::Exists()
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Poleax (1). |
Теги |
code access security, fileiopermission, security, winapi, безопасность |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|