AppDomainManager AppDomainManager AppDomainManager AppDomainManager Class

Definición

Proporciona un equivalente administrado de un host no administrado.Provides a managed equivalent of an unmanaged host.

public ref class AppDomainManager : MarshalByRefObject
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public class AppDomainManager : MarshalByRefObject
type AppDomainManager = class
    inherit MarshalByRefObject
Public Class AppDomainManager
Inherits MarshalByRefObject
Herencia
AppDomainManagerAppDomainManagerAppDomainManagerAppDomainManager
Atributos

Ejemplos

El ejemplo siguiente muestra una implementación muy sencilla de AppDomainManager.The following example shows a very simple implementation of 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;
            }
        }
    }
}
' 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
Imports System
Imports System.Collections
Imports System.Net
Imports System.Reflection
Imports System.Security
Imports System.Security.Permissions
Imports System.Security.Policy
Imports System.Security.Principal
Imports System.Threading
Imports System.Runtime.InteropServices

<assembly: System.Security.AllowPartiallyTrustedCallersAttribute()>
<SecurityPermissionAttribute(SecurityAction.LinkDemand, _
    Flags:=SecurityPermissionFlag.Infrastructure)> _
<SecurityPermissionAttribute(SecurityAction.InheritanceDemand, _
    Flags:=SecurityPermissionFlag.Infrastructure)> _
<GuidAttribute("F4D15099-3407-4A7E-A607-DEA440CF3891")> _
Public Class MyAppDomainManager
    Inherits AppDomainManager
    Private mySecurityManager As HostSecurityManager = Nothing
    
    Public Sub New() 
        Console.WriteLine(" My AppDomain Manager ")
        mySecurityManager = AppDomain.CurrentDomain.CreateInstanceAndUnwrap( _
            "CustomSecurityManager, Version=1.0.0.3, Culture=neutral, " & _
            "PublicKeyToken=5659fc598c2a503e", "MyNamespace.MySecurityManager")
        Console.WriteLine(" Custom Security Manager Created.")    
    End Sub 'New
    
    Public Overrides Sub InitializeNewDomain(ByVal appDomainInfo _
        As AppDomainSetup) 
        Console.Write("Initialize new domain called:  ")
        Console.WriteLine(AppDomain.CurrentDomain.FriendlyName)
        InitializationFlags = _
            AppDomainManagerInitializationOptions.RegisterWithHost   
    End Sub 'InitializeNewDomain

    Public Overrides ReadOnly Property HostSecurityManager() _
        As HostSecurityManager 
        Get
            Return mySecurityManager
        End Get
    End Property
End Class 'MyAppDomainManager 

Comentarios

Importante

No use AppDomainManager para configurar un dominio de aplicación en ASP.NET.Do not use AppDomainManager to configure an application domain in ASP.NET. En ASP.NET, la configuración debe controlarse por el host.In ASP.NET, configuration must be handled by the host.

Implementar el AppDomainManager clase permite que una aplicación de hospedaje participar en la creación de nuevos dominios de aplicación.Implementing the AppDomainManager class enables a hosting application to participate in the creation of new application domains. Para reemplazar el valor predeterminado AppDomainManager, identifique el ensamblado y tipo del reemplazo de AppDomainManager en las variables de entorno APPDOMAIN_MANAGER_ASM y APPDOMAIN_MANAGER_TYPE o utilice el <appDomainManagerAssembly > y <appDomainManagerType > elementos en el archivo de configuración.To replace the default AppDomainManager, identify the assembly and type of the replacement AppDomainManager in the APPDOMAIN_MANAGER_ASM and APPDOMAIN_MANAGER_TYPE environment variables, or use the <appDomainManagerAssembly> and <appDomainManagerType> elements in your configuration file. El ensamblado debe ser de plena confianza y estar incluido en la caché global de ensamblados o el directorio de la aplicación de arranque.The assembly must be fully trusted and be contained in the global assembly cache or the directory of the starting application. Los nombres de tipo y ensamblado deben calificarse por completo en las variables de entorno.The type and assembly names must be fully qualified in the environment variables. Por ejemplo:For example:

set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager

set APPDOMAIN_MANAGER_ASM=customappDomainmanager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f1368f7b12a08d72

Importante

Si el ensamblado que contiene su subclase de AppDomainManager depende de ensamblados marcados con el atributo conditional AllowPartiallyTrustedCallersAttribute atributo (APTCA), debe incluir esos ensamblados en la lista que se pasa a la PartialTrustVisibleAssemblies propiedad de la AppDomainSetupse usa para crear dominios de aplicación.If the assembly that contains your subclass of AppDomainManager depends on assemblies that are marked with the conditional AllowPartiallyTrustedCallersAttribute (APTCA) attribute, you must include those assemblies in the list that you pass to the PartialTrustVisibleAssemblies property of the AppDomainSetup you use to create application domains. En caso contrario, se deshabilitarán los ensamblados marcados con el atributo APTCA condicional.Otherwise, the assemblies that are marked with the conditional APTCA attribute will be disabled.

El AppDomainManager es el equivalente administrado del host no administrado.The AppDomainManager is the managed equivalent of the unmanaged host. Un AppDomainManager objeto 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.An AppDomainManager object participates in the creation of new application domains in a process and can customize the new AppDomain before other managed code runs. El AppDomainManager también puede proporcionar a los administradores de host que participen en otros aspectos de la ejecución de common language runtime.The AppDomainManager can also supply host managers that participate in other aspects of common language runtime execution. Por ejemplo, un AppDomainManager puede identificar un HostSecurityManager objeto que participa en las decisiones de seguridad del dominio de aplicación.For example, an AppDomainManager can identify a HostSecurityManager object that participates in the security decisions of the application domain.

Nota

Solo los ensamblados que se conceden FullTrust, como los ensamblados en la caché global de ensamblados o identificado como fullTrustAssemblies en el AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) método se puede cargar en el AppDomainManager constructor y el InitializeNewDomain método.Only assemblies granted FullTrust, such as assemblies in the global assembly cache or identified as fullTrustAssemblies in the AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) method can be loaded in the AppDomainManager constructor and the InitializeNewDomain method.

Nota

Esta clase contiene una petición de vínculo y una petición de herencia en el nivel de clase.This class contains a link demand and an inheritance demand at the class level. Un SecurityException se produce cuando el llamador inmediato o la clase derivada no tiene permiso de infraestructura.A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. Para obtener más información acerca de las peticiones de seguridad, consulte peticiones de vínculo y peticiones de herencias.For details about security demands, see Link Demands and Inheritance Demands.

Constructores

AppDomainManager() AppDomainManager() AppDomainManager() AppDomainManager()

Inicializa una nueva instancia de la clase AppDomainManager.Initializes a new instance of the AppDomainManager class.

Propiedades

ApplicationActivator ApplicationActivator ApplicationActivator ApplicationActivator

Obtiene el activador de aplicación que controla la activación de los complementos y las aplicaciones basadas en manifiesto del dominio.Gets the application activator that handles the activation of add-ins and manifest-based applications for the domain.

EntryAssembly EntryAssembly EntryAssembly EntryAssembly

Obtiene el ensamblado de entrada de una aplicación.Gets the entry assembly for an application.

HostExecutionContextManager HostExecutionContextManager HostExecutionContextManager HostExecutionContextManager

Obtiene el administrador de contexto de ejecución de host que administra el flujo del contexto de ejecución.Gets the host execution context manager that manages the flow of the execution context.

HostSecurityManager HostSecurityManager HostSecurityManager HostSecurityManager

Obtiene al administrador de seguridad de host que participa en las decisiones de seguridad del dominio de aplicación.Gets the host security manager that participates in security decisions for the application domain.

InitializationFlags InitializationFlags InitializationFlags InitializationFlags

Obtiene los marcadores de inicialización de los administradores de dominio de aplicación personalizados.Gets the initialization flags for custom application domain managers.

Métodos

CheckSecuritySettings(SecurityState) CheckSecuritySettings(SecurityState) CheckSecuritySettings(SecurityState) CheckSecuritySettings(SecurityState)

Indica si la operación especificada se permite en el dominio de aplicación.Indicates whether the specified operation is allowed in the application domain.

CreateDomain(String, Evidence, AppDomainSetup) CreateDomain(String, Evidence, AppDomainSetup) CreateDomain(String, Evidence, AppDomainSetup) CreateDomain(String, Evidence, AppDomainSetup)

Devuelve un dominio de aplicación nuevo o existente.Returns a new or existing application domain.

CreateDomainHelper(String, Evidence, AppDomainSetup) CreateDomainHelper(String, Evidence, AppDomainSetup) CreateDomainHelper(String, Evidence, AppDomainSetup) CreateDomainHelper(String, Evidence, AppDomainSetup)

Proporciona un método del asistente para crear un dominio de aplicación.Provides a helper method to create an application domain.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
InitializeNewDomain(AppDomainSetup) InitializeNewDomain(AppDomainSetup) InitializeNewDomain(AppDomainSetup) InitializeNewDomain(AppDomainSetup)

Inicializa el nuevo dominio de aplicación.Initializes the new application domain.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Seguridad

SecurityCriticalAttribute
requiere plena confianza para el llamador inmediato.Requires full trust for the immediate caller. Este miembro no se puede usar código de confianza parcial o transparente.This member cannot be used by partially trusted or transparent code.

InheritanceDemand
para las clases derivadas para conectar el código ejecutable en la infraestructura de hospedaje de common language runtime.for derived classes to plug executable code into the common language runtime hosting infrastructure. Enumeración asociada: Infrastructure.Associated enumeration: Infrastructure.

Se aplica a