다음을 통해 공유


ASP.NET에서 System.Transactions 사용

[이 항목은 시험판 설명서로, 이후 릴리스에서 변경될 수 있습니다. 빈 항목이 자리 표시자로 포함되어 있습니다.]

이 항목에서는 ASP.NET 응용 프로그램 내부에서 System.Transactions를 성공적으로 사용하는 방법에 대해 설명합니다.

ASP.NET에서 DistributedTransactionPermission 사용

System.Transactions는 부분적으로 신뢰할 수 있는 호출자를 지원하며 AllowPartiallyTrustedCallers 특성(APTCA)으로 표시됩니다. System.Transactions에 대한 신뢰 수준은 System.Transactions가 노출하는 리소스 형식(예: 시스템 메모리, 공유 프로세스 범위 리소스, 시스템 범위 리소스 및 기타 리소스) 및 해당 리소스에 액세스하는 데 필요한 신뢰 수준을 기반으로 정의됩니다. 부분 신뢰 환경에서 완전 신뢰가 아닌 어셈블리는 DistributedTransactionPermission이 부여되지 않은 경우 응용 프로그램 도메인 내에서만 트랜잭션을 사용할 수 있습니다(이 경우 보호되는 리소스는 시스템 메모리뿐임).

MSDTC(Microsoft Distributed Transaction Coordinator)에서 관리하도록 트랜잭션 관리를 에스컬레이션할 때마다 DistributedTransactionPermission이 필요합니다. 이 종류의 시나리오에서는 프로세스 범위 리소스, 특히 MSDTC 로그의 예약된 공간인 전역 리소스를 사용합니다. 이러한 사용 예로 데이터베이스에 대한 웹 프런트 엔드 또는 제공하는 서비스의 일부로 데이터베이스를 사용하는 응용 프로그램이 있습니다.

ASP.NET에는 자체 신뢰 수준 집합이 있으며 정책 파일을 통해 특정 사용 권한 집합을 이러한 신뢰 수준과 연결합니다. 자세한 내용은 ASP.NET Trust Levels and Policy Files을 참조하십시오. Windows SDK를 처음 설치할 때는 DistributedTransactionPermission과 연결된 기본 ASP.NET 정책 파일이 없습니다. 따라서 MSDTC에서 관리하도록 ASP.NET 응용 프로그램의 트랜잭션을 에스컬레이션하는 경우 DistributedTransactionPermission을 요청할 때 SecurityException이 발생하며 에스컬레이션이 실패합니다. ASP.NET 부분 신뢰 환경에서 트랜잭션 에스컬레이션을 사용하려면 SqlClientPermission과 동일한 기본 신뢰 수준에서 DistributedTransactionPermission을 부여해야 합니다. 이를 지원하도록 사용자 지정 신뢰 수준과 정책 파일을 구성하거나 Web_hightrust.configWeb_mediumtrust.config인 기본 정책 파일을 수정할 수 있습니다.

정책 파일을 수정하려면 DistributedTransactionPermission에 대한 SecurityClass 요소를 SecurityClasses 요소의 PolicyLevel 요소 아래에 추가하고 해당 IPermission 요소를 System.Transactions에 대한 ASP.NET NamedPermissionSet 아래에 추가합니다. 다음 구성 파일에서 이 작업을 보여 줍니다.

<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 보안 정책에 대한 자세한 내용은 <securityPolicy> Element를 참조하십시오.

동적 컴파일

액세스 시 동적으로 컴파일되는 ASP.NET 응용 프로그램에서 System.Transactions를 가져오고 사용하려면 System.Transactions 어셈블리에 대한 참조를 구성 파일에 넣어야 합니다. 특히 기본 루트 Web.config 구성 파일이나 특정 웹 응용 프로그램 구성 파일의 compilation/assemblies 섹션 아래에 참조를 추가해야 합니다. 다음은 이에 대한 예입니다.

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

자세한 내용은 add Element for <assemblies> for <compilation>를 참조하십시오.

참고 항목

개념

트랜잭션 관리 에스컬레이션

관련 자료

ASP.NET Trust Levels and Policy Files
ASP.NET <securityPolicy> Element