21.03.2024, 17:46 | #1 |
Участник
|
Как работают 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(); получаю ошибку 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. |
|