ASP.NET’te System.Transactions kullanma

Bu konuda, bir ASP.NET uygulamasının içinde nasıl başarıyla kullanabileceğiniz System.Transactions açıklanmaktadır.

ASP.NET'de DistributedTransactionPermission'ı etkinleştirme

System.Transactions kısmen güvenilen arayanları destekler ve özniteliğiyle AllowPartiallyTrustedCallers (APTCA) işaretlenir. için System.Transactions güven düzeyleri, kullanıma sunan kaynak türlerine (örneğin, sistem belleği, paylaşılan işlem genelindeki kaynaklar, sistem genelindeki kaynaklar ve diğer kaynaklar) System.Transactions ve bu kaynaklara erişmek için gerekli olan güven düzeyine göre tanımlanır. Kısmi güven ortamında, tam olmayan bir güven derlemesi, verilmediği DistributedTransactionPermissionsürece yalnızca Uygulama Etki Alanı içindeki işlemleri kullanabilir (bu durumda korunan tek kaynak sistem belleğidir).

DistributedTransactionPermission , işlem yönetimi microsoft dağıtılmış işlem düzenleyicisi (MSDTC) tarafından yönetilmeye her yükseltildiğinde talep edilir. Bu tür bir senaryo işlemi genelinde kaynakları ve MSDTC günlüğünde ayrılmış alandır özellikle bir genel kaynağı kullanır. Bir Web ön uç bir veritabanı veya veritabanı sağladığı hizmetler bir parçası olarak kullanan bir uygulama için bu kullanım örneğidir.

ASP.NET kendi güven düzeyleri kümesine sahiptir ve ilke dosyaları aracılığıyla belirli bir izin kümesini bu güven düzeyleriyle ilişkilendirir. Daha fazla bilgi için bkz . güven düzeyleri ve ilke dosyaları ASP.NET. Windows SDK'sını ilk yüklediğinizde, varsayılan ASP.NET ilke dosyalarının DistributedTransactionPermissionhiçbiri ile ilişkilendirilir. Bu nedenle, bir ASP.NET uygulamasındaki işleminiz MSDTC tarafından yönetilecek şekilde yükseltildiğinde, yükseltme işlemi talebi DistributedTransactionPermissionüzerine ile SecurityException başarısız olur. kısmi ASP.NET bir güven ortamında işlem yükseltmeyi etkinleştirmek için , ile aynı varsayılan güven düzeylerini SqlClientPermissionvermelisinizDistributedTransactionPermission. Bunu desteklemek için kendi özel güven düzeyinizi ve ilke dosyanızı yapılandırabilir veya Web_hightrust.config ve Web_mediumtrust.config olan varsayılan ilke dosyalarını değiştirebilirsiniz.

İlke dosyalarını değiştirmek için DistributedTransactionPermissionSecurityClasses öğesinin altındaki PolicyLevel öğesine bir SecurityClass öğesi ekleyin ve System.Transactions için ASP.NET NamedPermissionSet altına karşılık gelen IPermission bir öğe ekleyin. Aşağıdaki yapılandırma dosyası bunu gösterir.

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

ASP.NET güvenlik ilkesi hakkında daha fazla bilgi için bkz. securityPolicy Öğesi (ASP.NET Ayarlar Şeması).

Dinamik derleme

Erişimde dinamik olarak derlenmiş bir ASP.NET uygulamasında içeri aktarmak ve kullanmak System.Transactions istiyorsanız, yapılandırma dosyasına derlemeye System.Transactions bir başvuru yerleştirmelisiniz. Özellikle, başvuru varsayılan kök Web.config yapılandırma dosyasının veya belirli bir Web uygulamasının yapılandırma dosyasının bölümüne eklenmelidircompilation/assemblies. Aşağıdaki örnekte bunu gösterilmiştir.

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

Daha fazla bilgi için bkz. Derleme için derlemeler için öğe ekleme (ASP.NET Ayarlar Şema).

Ayrıca bkz.