Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как доступ ограничен типами предоставляемых ресурсов System.Transactions .
Существует три основных уровня доверия.System.Transactions Уровни доверия определяются на основе типов ресурсов, которые System.Transactions предоставляются, и уровня доверия, необходимого для доступа к этим ресурсам. Ресурсы, к которым System.Transactions предоставляет доступ, включают системную память, ресурсы, общие для процесса, и системные ресурсы. Уровни:
AllowPartiallyTrustedCallers (APTCA ) для приложений, использующих транзакции в одном домене приложения.
DistributedTransactionPermission (DTP) для приложений с использованием распределенных транзакций.
Полное доверие для устойчивых ресурсов, приложений управления конфигурацией и устаревших приложений взаимодействия.
Замечание
Не рекомендуется вызывать ни один из интерфейсов подключения с имперсонированными контекстами.
Уровни доверия
APTCA (частичное доверие)
Сборка System.Transactions может вызываться частично доверенным кодом, так как она помечена атрибутом AllowPartiallyTrustedCallers (APTCA). Этот атрибут по сути удаляет неявный LinkDemand набор разрешений FullTrust, который иначе автоматически добавляется к каждому общедоступному методу в каждом типе. Однако некоторые типы и члены по-прежнему требуют более строгих разрешений.
Атрибут APTCA позволяет приложениям использовать транзакции в частичном доверии в одном домене приложения. Это позволяет использовать транзакции без эскалации и нестабильные регистрации, которые можно применять для обработки ошибок. Одним из примеров этого является транзакционная хэш-таблица и приложение, использующее её. Данные можно добавлять и удалять из хэш-таблицы в рамках одной транзакции. Если транзакция позже откатится, все изменения, внесенные в хэш-таблицу под этой транзакцией, можно отменить.
Разрешение на распределенные транзакции (DTP)
При эскалации транзакции, управляемой System.Transactions MSDTC, System.Transactions требует DistributedTransactionPermission от DTP создать распределенную транзакцию. Это означает, что код, который приводит к эскалации транзакции (например, посредством сериализации или дополнительных постоянных зачислений), должен иметь доступ к DTP. Код, созданный первоначально транзакцией System.Transactions , не обязательно должен обладать этим разрешением.
Требования к ссылкам FullTrust
Этот уровень разрешений предназначен для ограничения приложений, которые записываются в устойчивые ресурсы. При сбое приложение должно иметь возможность восстановиться с помощью диспетчера транзакций, чтобы определить конечный результат транзакции, чтобы он мог обновлять постоянные данные. Этот тип приложения называется устойчивым диспетчером источников. Классическим примером этого типа приложения является SQL.
Чтобы включить восстановление, этот тип приложения имеет возможность постоянно использовать системные ресурсы. Это связано с тем, что диспетчер транзакций, который можно восстановить, должен помнить транзакции, зафиксированные до тех пор, пока не сможет подтвердить, что все устойчивые диспетчеры ресурсов, участвующие в транзакции, получили результат. Таким образом, этот тип приложения требует полного доверия и не должен выполняться, если только этот уровень доверия не был предоставлен.
Дополнительные сведения о устойчивых зачислениях и восстановлении см. в разделах " Включение ресурсов в качестве участников транзакции " и " Выполнение восстановления ".
Приложения, выполняющие межоперационные работы с COM+, также должны обладать полным доверием.
Ниже приведен список типов и элементов, которые не могут быть вызваны частично доверенным кодом, так как они украшены декларативным атрибутом безопасности FullTrust.
PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")
Для использования указанных выше типов или методов исключительно непосредственный вызывающий объект должен иметь набор разрешений FullTrust.