|
|
#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 Подскажите, где я ошибаюсь? |
|
|
|
|
#2 |
|
Участник
|
От того, что вы написали server, Job не станет выполняться на сервере - они всегда выполняются на клиенте.
Проверить же доступ можно только в коде, который выполняется на сервере. Соответственно, создайте класс и в него скопируйте этот метод. |
|
|
|
|
#3 |
|
Участник
|
Цитата:
Правда, еще вопрос что проще... |
|
|
|
|
#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. |
|
|