|
03.09.2007, 15:08 | #1 |
Участник
|
CodeAccessPermission DAX 4 SP2
Добрый день.
В коде, который указан ниже при выполнении возникает ошибка Код: server static void Job2(Args _args) { Connection cn = new Connection(); Statement st; SqlStatementExecutePermission sqlPerm; str sSQL; ; sSQL = "select AccountNum from LedgerTable"; sqlPerm = new SqlStatementExecutePermission(sSQL); sqlPerm.assert(); st = cn.createStatement(); st.executeQuery(sSQL); } Код: Сообщение (15:18:08) Сбой запроса на разрешение типа "SqlStatementExecutePermission". (S)\Classes\SqlStatementExecutePermission\demand (S)\Classes\Statement\executeQuery (C)\Jobs\Job2 - line 16 Подскажите, где я ошибаюсь? |
|
03.09.2007, 15:26 | #2 |
Участник
|
От того, что вы написали server, Job не станет выполняться на сервере - они всегда выполняются на клиенте.
Проверить же доступ можно только в коде, который выполняется на сервере. Соответственно, создайте класс и в него скопируйте этот метод. |
|
03.09.2007, 16:13 | #3 |
Участник
|
Цитата:
Правда, еще вопрос что проще... |
|
03.09.2007, 16:26 | #4 |
Участник
|
Спасибо, все заработало.
Можно еще вопрос из той же области: Правильно ли я понял, что механизм разрешений работает следующим образом: 1. Создаем экземпляр класс проверок *Permission 2. Вызываем метод assert, который проверят возможность исполнения опасного действия 3. В классе, который исполняет опасное действие, вызывается метод demand, который по стеку вызовов ищет нужный ему assert Если это так, то не совсем понятен следующий код в методе: Код: WinApiServer::createFile() { // check file I/O permission if(_flags == #OPEN_EXISTING) { fileIOPerm = new FileIOPermission(_fileName,'r'); } else { fileIOPerm = new FileIOPermission(_fileName,'w'); } fileIOPerm.demand(); } Такой код встречается во многих методах класса WinApiServer Кстати, если вызвать этот метод, то на вызове demand возникает ошибка разрешения. Вероятно это ошибка и должен быть вызов assert. |
|