Aracılığıyla paylaş


ASP.NET'de 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 AllowPartiallyTrustedCallers (APTCA) özniteliğiyle işaretlenir. System.Transactions için güven düzeyleri, System.Transactions’in kullanıma sunduğu kaynak türlerine (örneğin, sistem belleği, paylaşılan işlem genelindeki kaynaklar, sistem genelindeki kaynaklar ve diğer kaynaklar) ve bu kaynaklara erişmek için gereken güven seviyesine 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önetiminin Microsoft Dağıtılmış İşlem Koordinatörü (MSDTC) tarafından yönetilecek şekilde yükseltildiği her seferde talep edilir. Bu tür bir senaryo, işlem genelindeki kaynakları ve özellikle MSDTC günlüğündeki ayrılmış alan olan genel bir kaynağı kullanır. Bu kullanıma örnek olarak, bir veritabanının Web ön ucu veya sağladığı hizmetlerin bir parçası olarak veritabanı kullanan bir uygulama örnektir.

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 İlke Dosyaları ASP.NET. Windows SDK'sını ilk yüklediğinizde, varsayılan ASP.NET ilke dosyalarından hiçbiri DistributedTransactionPermission ile ilişkilendirilmez. Bu nedenle, bir ASP.NET uygulamasındaki işleminiz MSDTC tarafından yönetilecek şekilde yükseltildiğinde, SecurityException talep edilirken DistributedTransactionPermission ile yükseltme başarısız olur. ASP.NET kısmi bir güven ortamında işlem yükseltmeyi etkinleştirmek için, DistributedTransactionPermission'in varsayılan güven düzeylerini SqlClientPermission ile aynı şekilde vermelisiniz. Bunu desteklemek için kendi özel güven düzeyinizi ve ilke dosyanızı yapılandırabilir veyaWeb_hightrust.config ve Web_mediumtrust.config varsayılan ilke dosyalarını değiştirebilirsiniz.

İlke dosyalarını değiştirmek için SecurityClassDistributedTransactionPermission öğesinin altındaki SecurityClasses öğesine bir PolicyLevel öğesi ekleyin ve System.Transactions için ASP.NET IPermission altına karşılık gelen NamedPermissionSet 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

ASP.NET uygulamasında, erişim sırasında dinamik olarak derlenen System.Transactions içeri aktarmak ve kullanmak istiyorsanız, System.Transactions derlemesine yapılandırma dosyasına bir başvuru yerleştirmelisiniz. Özellikle, başvuru varsayılan kök compilation/assemblies yapılandırma dosyasının veya belirli bir Web uygulamasının yapılandırma dosyasının bölümüne eklenmelidir. 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 derlemelere öğe ekleme (ASP.NET Ayarları Şeması).

Ayrıca bakınız