Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[Este tema forma parte de la documentación de la versión preliminar y está sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posición.]
Este tema describe cómo se puede utilizar System.Transactions correctamente dentro de una aplicación ASP.NET.
Habilitar DistributedTransactionPermission en ASP.NET
System.Transactions admite los llamadores de confianza parcial y se marca con el atributo (APTCA) AllowPartiallyTrustedCallers. Los niveles de confianza para System.Transactions se definen dependiendo de los tipos de recursos, (por ejemplo, memoria del sistema, recursos del proceso compartido, recursos para todo el sistema y otros recursos) , que System.Transactions expone y el nivel de confianza que se debería exigir para tener acceso a esos recursos. En un entorno de confianza parcial, un ensamblado de no plena confianza puede utilizar solo las transacciones dentro del dominio de aplicación (en este caso, el único recurso protegiéndose es la memoria del sistema), a menos que se permita DistributedTransactionPermission.
Se exige DistributedTransactionPermission cuando la administración de la transacción realice una escalada para ser administrada por el coordinador de transacciones distribuidas de Microsoft (MSDTC). Este tipo de escenario utiliza todos los recursos proceso y particularmente un recurso global, que es el espacio reservado en el registro de MSDTC. Un ejemplo de este uso es un front-end de web a una base de datos o una aplicación que utiliza una base de datos como parte de los servicios le proporciona.
ASP.NET tiene su propio conjunto de niveles de confianza y asocia un conjunto concreto de permisos con estos niveles de confianza a través de los archivos de directivas. Para obtener más información, vea ASP.NET Trust Levels and Policy Files. Cuando instala inicialmente el SDK de Windows, ninguno de los archivos de políticas ASP.NET predeterminados está asociado con DistributedTransactionPermission. Como tal, cuando su transacción en una aplicación ASP.NET realiza una escalada para ser administrada por MSDTC, se produce un error en la extensión con SecurityException al exigir DistributedTransactionPermission. Para habilitar la extensión de transacciones en un entorno de confianza parcial de ASP.NET, debe concederDistributedTransactionPermission en los mismos niveles de confianza predeterminados como aquellos de SqlClientPermission. Puede configurar su propio nivel de confianza personalizado y archivo de directivas para admitir esto o puede modificar los archivos de directivas predeterminados, que son Web_hightrust.config y Web_mediumtrust.config.
Para modificar los archivos de directivas, agregue un elemento SecurityClass para DistributedTransactionPermission al elemento SecurityClasses bajo el elemento PolicyLevel y agregue un elemento IPermission correspondiente bajo ASP.NET NamedPermissionSet para System.Transactions. El siguiente archivo de configuración lo muestra.
<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>
Para obtener más información acerca de la directiva de seguridad ASP.NET, vea <securityPolicy> Element.
Compilación dinámica
Si desea importar y utilizar System.Transactions en una aplicación ASP.NET que está compilada dinámicamente en acceso, debería colocar una referencia al ensamblado System.Transactions en el archivo de configuración. Específicamente, la referencia se debería agregar en la sección compilation/ assemblies de la raíz predeterminada del archivo de configuración Web.config predeterminado o el archivo de configuración de una aplicación web concreta. En el siguiente ejemplo se muestra esto.
<configuration>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
</configuration>
Para obtener más información, vea add Element for <assemblies> for <compilation>.
Vea también
Conceptos
Extensión de administración de transacciones
Otros recursos
ASP.NET Trust Levels and Policy Files
ASP.NET <securityPolicy> Element