.net 4 CAS: удалить определенную привилегию - PullRequest
0 голосов
/ 02 декабря 2011

Я пытаюсь создать интерфейс веб-службы для внутреннего приложения.Я должен повторно использовать много старых вещей, которые, помимо прочего, имеют вызовы MessageBox.Show () в различных местах, которые я должен использовать.Я пытаюсь проверить ввод, чтобы не отвечать на эти вызовы, но я не уверен, что мне это удастся.

Поэтому я подумал об отказе от UIPrivilege.Я делаю так:

void DoSomething() {
    new UIPermission(UIPermissionWindow.NoWindows).PermitOnly();
    DoTheRealWork();
}

Это работает в том смысле, что он не допускает никакого пользовательского интерфейса, но также запрещает несвязанные привилегии, в которых нуждается код (например, OleDbPermission).Как я могу отрицать только UIPermission, не касаясь каких-либо других разрешений (код имеет полное доверие).

(UIPermission.Deny() устарел в .net framework 4 и выдает ошибку при использовании, поэтому это неправильный ответ).

1 Ответ

0 голосов
/ 02 декабря 2011

Что именно вы пытаетесь достичь?Ваш веб-сервис не должен работать в режиме UserInteractive 1 , поэтому он должен выдавать исключение времени выполнения, если код пытается показать окно сообщения.Это то же самое поведение, которое вы бы увидели, если бы вы успешно ограничивали разрешения (кроме сведений об исключении), так зачем беспокоиться об ограничении разрешений kludge?




1 Веб-служба, развернутая в IIS, по умолчанию не будет работать как интерактивная.Однако, если вы работаете на веб-сервере разработки Cassini, это не так, поэтому вам следует проверить поведение при развертывании IIS.

...