Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Cette rubrique explique comment utiliser System.Transactions avec succès dans une application ASP.NET.
Activer DistributedTransactionPermission dans ASP.NET
System.Transactions prend en charge les appelants partiellement fiables et est marqué avec l’attribut AllowPartiallyTrustedCallers (APTCA). Les niveaux d'approbation pour System.Transactions sont définis en fonction des types de ressources (par exemple, la mémoire système, les ressources partagées à l'échelle du processus, les ressources à l'échelle du système et d'autres ressources) que System.Transactions expose et du niveau de confiance requis pour accéder à ces ressources. Dans un environnement de confiance partielle, un assembly dont la confiance n'est pas totale ne peut utiliser que des transactions au sein du domaine d'application (dans ce cas, la seule ressource protégée est la mémoire système), à moins qu'il ne se voie accorder le DistributedTransactionPermission.
L’autorisationDistributedTransactionPermission est demandée chaque fois que la gestion des transactions est remontée pour être managée par le MSDTC (Microsoft Distributed Transaction Coordinator). Ce type de scénario utilise des ressources à l’échelle du processus et en particulier une ressource globale, qui est l’espace réservé dans le journal MSDTC. Un exemple d’utilisation est une interface Web pour une base de données ou une application qui utilise une base de données parmi les services qu'elle offre.
ASP.NET a son propre ensemble de niveaux d’approbation et associe un ensemble spécifique d’autorisations à ces niveaux d’approbation par le biais de fichiers de stratégie. Pour plus d’informations, consultez ASP.NET niveaux d’approbation et fichiers de stratégie. Lorsque vous installez initialement le Kit de développement logiciel (SDK) Windows, aucun des fichiers de stratégie de ASP.NET par défaut n’est associé au DistributedTransactionPermissionfichier . Ainsi, lorsque votre transaction est remontée dans une application ASP.NET pour gestion par le MSDTC, la remontée échoue avec une SecurityException lors de la demande de DistributedTransactionPermission. Pour activer l’escalade des transactions dans un environnement d’approbation partielle ASP.NET, vous devez accorder les DistributedTransactionPermission mêmes niveaux d’approbation par défaut que ceux de SqlClientPermission. Vous pouvez configurer votre propre niveau d’approbation personnalisé et votre propre fichier de stratégie pour prendre en charge cela, ou vous pouvez modifier les fichiers de stratégie par défaut, qui sont Web_hightrust.config et Web_mediumtrust.config.
Pour modifier les fichiers de stratégie, ajoutez un élément SecurityClass pour DistributedTransactionPermission à l'élément SecurityClasses sous l'élément PolicyLevel et ajoutez un élément correspondant IPermission sous l'élément ASP.NET NamedPermissionSet pour System.Transactions. Le fichier de configuration suivant illustre cela.
<SecurityClasses>
<SecurityClass Name="DistributedTransactionPermission" Description="System.Transactions.DistributedTransactionPermission, System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
...
</SecurityClasses>
<PermissionSet
class="NamedPermissionSet"
version="1"
Name="ASP.Net">
<IPermission
class="System.Transactions.DistributedTransactionPermission, System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Unrestricted="true"
/>
...
</PermissionSet>
Pour plus d’informations sur ASP.NET stratégie de sécurité, consultez securityPolicy Element (ASP.NET Settings Schema).
Compilation dynamique
Si vous souhaitez importer et utiliser System.Transactions dans une application ASP.NET compilée dynamiquement lors de l’accès, vous devez placer une référence à l’assembly System.Transactions dans le fichier de configuration. Plus précisément, la référence doit être ajoutée sous la compilation/assemblies section du fichier de configuration racine par défautWeb.config ou du fichier de configuration d’une application web spécifique. l’exemple ci-dessous illustre ce cas de figure.
<configuration>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
</configuration>
Pour plus d’informations, consultez Élément add pour les assemblys à compiler (Schéma des paramètres ASP.NET).