Книга: C# для профессионалов. Том II
Другие полезные методы ContextUtil
Другие полезные методы ContextUtil
Рассмотрим еще пару методов класса ContextUtil
которые могут оказаться полезны при программировании на C#.
Первый метод IsCallerInRole()
предназначен для безопасности на основе ролей. В качестве входной переменной этот метод получает строковую переменную, содержащую имя определенной роли системы безопасности Windows 2000. Он возвращает булево значение, указывающее, является или нет пользователь, который в данный момент вызывает объект, членом указанной роли.
В примере кода ниже добавлена проверка, чтобы убедиться, что пользователь, пытающийся вызвать PlaceOrder()
, является авторизованным членом роли Administrators
. Если пользователь не является членом этой роли, то PlaceOrder()
порождает исключение.
[AutoComplete]
public bool PlaceOrder(bool CommitTrans) {
if (!ContextUtil.IsCallerInRole("Administrators") {
throw new AccessViolationException("User is not authorized to place" + "orders.");
}
// Поместить код транзакции здесь
}
Вторым полезным методом класса ContextUtil
является IsInTransaction()
. Этот метод возвращает булево значение, указывающее, участвует ли объект в данный момент в транзакции.
Профессиональным программистам C# приходится иногда разрабатывать транзакционные компоненты для удаленной установки, которую они не контролируют. Чтобы убедиться, что сборки, требующие транзакционной поддержки, правильно для нее сконфигурированы, можно вызвать свойство IsInTransaction
класса ContextUtil
и инициировать ошибку, если это свойство задано как false
.
В примере кода ниже свойство IsInTransaction
используется для гарантии, что сборка правильно сконфигурирована, прежде чем ей будет разрешено ей начать какую-либо работу. Код порождает исключение, если IsInTransaction
имеет значение false
. Можно протестировать это, изменяя атрибут класса на TransactionalOptionDisabled
.
[AutoComplete]
public bool PlaceOrder(bool CommitTrans) {
if (!ContextUtil.IsInTransaction) {
throw new
ConfigurationException("This assembly needs to be configured for" + " transactions.");
}
// Выполнить транзакцию
}
Этим мы завершаем обсуждение транзакций COM+ и класса ContextUtil
. Давайте перейдем к пулам объектов.
- Другие инструменты для осуществления резервного копирования
- Другие изменения в 7-й версии InterBase
- Датчик расположения и другие датчики
- 6.4 Другие файловые системы
- Другие предикаты сравнения
- Каждый раз после загрузки Windows запускаются разные бесполезные приложения, а возле часов появляются лишние значки. Что...
- Я установил программу и не хочу, чтобы другие пользователи о ней знали. Как скрыть ее?
- Можно ли интегрировать в пакет установки Windows Service Pack и другие обновления, чтобы потом не приходилось их устанав...
- Другие варианты подключения
- Как из-под учетной записи пользователя (без администраторских привилегий) включать и отключать оборудование и выполнять ...
- В Microsoft Word не всегда удобно выделять большие фрагменты текста мышью. Есть ли другие способы?
- Приложение 2 Полезные программы