Bagikan melalui


Menggunakan System.Transactions di ASP.NET

Topik ini menjelaskan bagaimana Anda dapat berhasil menggunakan System.Transactions di dalam aplikasi ASP.NET.

Aktifkan DistributedTransactionPermission di ASP.NET

System.Transactions mendukung pemanggil tepercaya parsial dan ditandai dengan atribut AllowPartiallyTrustedCallers (APTCA). Tingkat kepercayaan untuk System.Transactions ditentukan berdasarkan jenis sumber daya (misalnya, memori sistem, sumber daya seluruh proses bersama, sumber daya seluruh sistem, dan sumber daya lainnya) yang diekspos System.Transactions dan tingkat kepercayaan yang seharusnya diperlukan untuk mengakses sumber daya tersebut. Dalam lingkungan kepercayaan parsial, perakitan kepercayaan tidak penuh hanya dapat menggunakan transaksi dalam Domain Aplikasi (dalam hal ini, satu-satunya sumber daya yang dilindungi adalah memori sistem), kecuali jika DistributedTransactionPermission diberikan.

DistributedTransactionPermission diminta setiap kali manajemen transaksi ditingkatkan untuk dikelola oleh Koordinator Transaksi Terdistribusi Microsoft (MSDTC). Skenario semacam ini menggunakan sumber daya seluruh proses dan khususnya sumber daya global,yaitu ruang yang dicadangkan di log MSDTC. Contoh penggunaan ini adalah frontend Web ke database atau aplikasi yang menggunakan database sebagai bagian dari layanan yang disediakannya.

ASP.NET memiliki kumpulan tingkat kepercayaannya sendiri dan mengaitkan kumpulan izin tertentu dengan tingkat kepercayaan ini melalui file kebijakan. Untuk informasi selengkapnya, lihat Tingkat Kepercayaan dan File Kebijakan ASP.NET. Saat Anda pertama kali menginstal SDK Windows, tidak ada file kebijakan ASP.NET default yang terkait dengan DistributedTransactionPermission. Dengan demikian, ketika transaksi Anda dalam aplikasi ASP.NET ditingkatkan untuk dikelola oleh MSDTC, eskalasi gagal dengan SecurityException setelah menuntut DistributedTransactionPermission. Untuk mengaktifkan eskalasi transaksi di lingkungan kepercayaan parsial ASP.NET, Anda harus memberikan DistributedTransactionPermission di tingkat kepercayaan default yang sama dengan SqlClientPermission. Anda dapat mengonfigurasi tingkat kepercayaan kustom dan file kebijakan untuk mendukung ini, atau memodifikasi file kebijakan default, yaitu Web_hightrust.config dan Web_mediumtrust.config.

Untuk memodifikasi file kebijakan, tambahkan elemen SecurityClass untuk DistributedTransactionPermission ke elemen SecurityClasses di bagian elemen PolicyLevel dan tambahkan elemen IPermission yang sesuai di bagian ASP.NET NamedPermissionSet untuk System.Transactions. File konfigurasi berikut mendemonstrasikan hal ini.

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

Untuk informasi selengkapnya tentang kebijakan keamanan ASP.NET, lihat Elemen SecurityPolicy (Skema Pengaturan ASP.NET).

Kompilasi Dinamis

Jika Anda ingin mengimpor dan menggunakan System.Transactions dalam aplikasi ASP.NET yang dikompilasi secara dinamis pada akses, Anda harus menempatkan referensi ke perakitan System.Transactions dalam file konfigurasi. Secara khusus, referensi harus ditambahkan di bawah bagian compilation/assemblies dari file konfigurasi Web.config akar default, atau file konfigurasi aplikasi Web tertentu. Contoh berikut menunjukkan hal berikut.

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

Untuk informasi selengkapnya, lihat menambahkan Elemen perakitan untuk kompilasi (Skema Pengaturan ASP.NET).

Lihat juga