Показать сообщение отдельно
Старый 21.03.2024, 17:46   #1  
Lankey is offline
Lankey
Участник
 
54 / 13 (1) ++
Регистрация: 19.05.2020
Как работают InteropPermission и fileIOPermission?
AX2009
Помогите, пожалуйста, понять, как работают InteropPermission и fileIOPermission?

Есть Job. Мне нужно получить путь к временной папке, независимо от того, где исполняется код: на сервере или клиенте.
Для тестирования написала Job запускаю через menuItem c calledFrom = server для исполнения на сервере. И просто по F5 для исполнения на кленте

X++:
static server void My_test (Args _args)
{
    FilePath                      tmpPath;
    FileIOPermission        fileIOPermission;
    InteropPermission       perm;
;
   // perm = new InteropPermission(InteropKind::ClrInterop);
   // perm.assert();
    fileIOPermission = new FileIOPermission('','r');
    fileIOPermission.assert();
    if(isRunningOnServer())
    {
        info(strFmt('Server'));
        tmpPath = WinAPIServer::getTempPath();
    }
    else
    {
        info(strFmt('Client'));
        tmpPath = WinAPI::getTempPath(); 
    }
    //CodeAccessPermission::revertAssert();
    info(strFmt('tmpPath %1', tmpPath));

Вопросы
1 ) Почему, если я убираю
X++:
    fileIOPermission = new FileIOPermission('','r');
    fileIOPermission.assert();
перед if(isRunningOnServer()) , то
получаю ошибку
Request for the permission of type 'FileIOPermission' failed.
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\getTempPath - line 13

То есть, если в моем коде есть FileIOPermission, то вторичный FileIOPermission, что внутри tmpPath = WinAPIServer::getTempPath(); отрабатывает. А как только свои две строки убираю, то выдается эта ошибка.

2) Почему я не могу раскомментировать строки
X++:
// perm = new InteropPermission(InteropKind::ClrInterop);
   // perm.assert();
Как только я это делаю, то получаю ошибку (причем, и когда на клиенте исполяняю, и когда на сервере)
Multiple calls to CodeAccessPermission.Assert
(S)\Classes\FileIOPermission\assert
(S)\Jobs\My_test - line 38
(S)\Classes\MenuFunction\runServer

Спасибо

Последний раз редактировалось Lankey; 21.03.2024 в 17:49.