Použití System.Transactions v ASP.NET

Toto téma popisuje, jak můžete úspěšně používat System.Transactions v aplikaci ASP.NET.

Povolit DistributedTransactionPermission v technologii ASP.NET

System.Transactions podporuje částečně důvěryhodné volající a je označen atributem AllowPartiallyTrustedCallers (APTCA). Úrovně důvěryhodnosti jsou System.Transactions definovány na základě typů prostředků (například systémová paměť, sdílené prostředky pro celý proces, systémové prostředky a další prostředky), které System.Transactions zpřístupňují a úroveň důvěryhodnosti, která by měla být nutná pro přístup k těmto prostředkům. V prostředí částečné důvěryhodnosti, můžete použít jiný plně důvěryhodné sestavení pouze transakce v rámci domény aplikace (v takovém případě jediný zdroj chráněn je systémová paměť), pokud má oprávnění DistributedTransactionPermission.

DistributedTransactionPermission vyžaduje se vždy, když je správa transakcí eskalována tak, aby byla spravována koordinátorem distribuovaných transakcí Společnosti Microsoft (MSDTC). Tento druh scénář využívá prostředky celého procesu a zejména globální zdroj, který je vyhrazené místo v protokolu MSDTC. Příklad toto využití je do databáze nebo aplikace, která používá databázi v rámci služeb, které poskytuje klientské části webu.

ASP.NET má vlastní sadu úrovní důvěryhodnosti a přidruží konkrétní sadu oprávnění k těmto úrovním důvěryhodnosti prostřednictvím souborů zásad. Další informace najdete v tématu ASP.NET Úrovně důvěryhodnosti a soubory zásad. Při počáteční instalaci sady Windows SDK nejsou k sadě DistributedTransactionPermissionWindows SDK přidruženy žádné výchozí soubory zásad ASP.NET . Například, když vaše transakce v ASP.NET aplikace je eskalována, aby byla spravována MSDTC, eskalace selže s SecurityException náročným DistributedTransactionPermission. Pokud chcete povolit eskalaci transakcí v ASP.NET částečném důvěryhodném prostředí, měli byste udělit DistributedTransactionPermission stejné výchozí úrovně důvěryhodnosti jako úrovně SqlClientPermissiondůvěryhodnosti . Můžete buď nakonfigurovat vlastní úroveň důvěryhodnosti a soubor zásad tak, aby to podporoval, nebo můžete upravit výchozí soubory zásad, které jsou Web_hightrust.config a Web_mediumtrust.config.

Chcete-li upravit soubory zásad, přidejte SecurityClass prvek pro DistributedTransactionPermissionSecurityClasses prvek pod PolicyLevel element a přidejte odpovídající IPermission prvek pod ASP.NET NamedPermissionSet pro System.Transactions. Následující konfigurační soubor ukazuje to.

<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>

Další informace o zásadách zabezpečení ASP.NET naleznete v tématu securityPolicy – element (ASP.NET Nastavení Schéma).

Dynamická kompilace

Pokud chcete importovat a používat System.Transactions v aplikaci ASP.NET, která je dynamicky kompilována pro přístup, měli byste umístit odkaz na System.Transactions sestavení v konfiguračním souboru. Konkrétně by se měl odkaz přidat do compilation/assemblies části výchozího kořenového konfiguračního souboru Web.config nebo konkrétního konfiguračního souboru webové aplikace. Následující příklad ukazuje to.

<configuration>
   <system.web>
      <compilation>
         <assemblies>
      <add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
         </assemblies>
      </compilation>
   </system.web>
</configuration>

Další informace naleznete v tématu přidání elementu pro sestavení pro kompilaci (ASP.NET Nastavení Schéma).

Viz také