AppDomainManager (Clase)

Nota: esta clase es nueva en la versión 2.0 de .NET Framework.

Proporciona un equivalente administrado de un host no administrado.

Espacio de nombres: System
Ensamblado: mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)] 
public class AppDomainManager : MarshalByRefObject
/** @attribute ComVisibleAttribute(true) */ 
public class AppDomainManager extends MarshalByRefObject
ComVisibleAttribute(true) 
public class AppDomainManager extends MarshalByRefObject

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.

NotaNota

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.

NotaNota

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

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

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.

.NET Framework

Compatible con: 2.0

Adiciones de comunidad

AGREGAR
Mostrar: