AppDomainManager (Clase)
Ensamblado: mscorlib (en mscorlib.dll)
Al implementar la clase AppDomainManager, una aplicación de alojamiento puede participar en la creación de nuevos dominios de aplicación. Para reemplazar el objeto AppDomainManager predeterminado, identifique el ensamblado y el tipo del objeto AppDomainManager de reemplazo en las variables de entorno APPDOMAIN_MANAGER_ASM y APPDOMAIN_MANAGER_TYPE. El ensamblado debe ser de plena confianza y estar incluido en la caché de ensamblados global o en el directorio de la aplicación de arranque. En las variables de entorno, el tipo y el ensamblado deben tener un nombre completo. Por ejemplo:
set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager
set APPDOMAIN_MANAGER_ASM=customappDomainmanager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f1368f7b12a08d72
AppDomainManager es el equivalente administrado del host no administrado. Un objeto AppDomainManager participa en la creación de nuevos dominios de aplicación en un proceso y puede personalizar el nuevo AppDomain antes de que se ejecute otro código administrado. AppDomainManager también puede proporcionar administradores de host que participen en otros aspectos de ejecución de Common Language Runtime. Por ejemplo, AppDomainManager puede identificar un objeto HostSecurityManager que participe en las decisiones de seguridad del dominio de aplicación.
Nota |
|---|
| Los ensamblados que garantizan FullTrust, como los de la caché de ensamblados global o los identificados como fullTrustAssemblies en el método AppDomain.CreateDomain(String,Evidence,AppDomainSetup,PermissionSet,StrongName[]) son los únicos que se pueden cargar en el constructor AppDomainManager y en el método InitializeNewDomain. |
Nota |
|---|
| Esta clase contiene una petición de vínculo y una petición de herencia en el nivel de clase. Se produce una excepción SecurityException si el llamador inmediato o la clase derivada no dispone de permisos de infraestructura. Para obtener más información sobre las peticiones de seguridad, vea Peticiones de vínculos y Peticiones de herencia.
|
En el ejemplo de código siguiente se muestra una implementación muy sencilla de AppDomainManager.
// To replace the default AppDomainManager, identify the // replacement assembly and replacement type in the // APPDOMAIN_MANAGER_ASM and APPDOMAIN_MANAGER_TYPE // environment variables. For example: // set APPDOMAIN_MANAGER_TYPE=library.TestAppDomainManager // set APPDOMAIN_MANAGER_ASM=library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f1368f7b12a08d72 using System; using System.Collections; using System.Net; using System.Reflection; using System.Security; using System.Security.Permissions; using System.Security.Policy; using System.Security.Principal; using System.Threading; using System.Runtime.InteropServices; [assembly: System.Security.AllowPartiallyTrustedCallersAttribute()] namespace MyNamespace { [GuidAttribute("F4D15099-3407-4A7E-A607-DEA440CF3891")] [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)] [SecurityPermissionAttribute(SecurityAction.InheritanceDemand, Flags = SecurityPermissionFlag.Infrastructure)] public class MyAppDomainManager : AppDomainManager { private HostSecurityManager mySecurityManager = null; public MyAppDomainManager() { Console.WriteLine(" My AppDomain Manager "); mySecurityManager = AppDomain.CurrentDomain.CreateInstanceAndUnwrap( "CustomSecurityManager, Version=1.0.0.3, Culture=neutral, " + "PublicKeyToken=5659fc598c2a503e", "MyNamespace.MySecurityManager") as HostSecurityManager; Console.WriteLine(" Custom Security Manager Created."); } public override void InitializeNewDomain(AppDomainSetup appDomainInfo) { Console.Write("Initialize new domain called: "); Console.WriteLine(AppDomain.CurrentDomain.FriendlyName); InitializationFlags = AppDomainManagerInitializationOptions.RegisterWithHost; } public override HostSecurityManager HostSecurityManager { get { return mySecurityManager; } } } }
- SecurityPermission para trabajar con código de infraestructura. Valor de la petición: SecurityAction.LinkDemand; valor del permiso: SecurityPermissionFlag.Infrastructure
- SecurityPermission para trabajar con código de infraestructura. Valor de la petición: SecurityAction.InheritanceDemand; valor del permiso: SecurityPermissionFlag.Infrastructure
Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
Nota