Condividi tramite


AppDomainManager Classe

Definizione

Fornisce un equivalente gestito di un host non gestito.

public ref class AppDomainManager : MarshalByRefObject
[System.Runtime.InteropServices.ComVisible(true)]
public class AppDomainManager : MarshalByRefObject
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public class AppDomainManager : MarshalByRefObject
[<System.Runtime.InteropServices.ComVisible(true)>]
type AppDomainManager = class
    inherit MarshalByRefObject
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Security.SecurityCritical>]
type AppDomainManager = class
    inherit MarshalByRefObject
Public Class AppDomainManager
Inherits MarshalByRefObject
Ereditarietà
AppDomainManager
Attributi

Esempio

L'esempio seguente illustra un'implementazione molto semplice di 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.Policy;
using System.Security.Principal;
using System.Threading;
using System.Runtime.InteropServices;

[assembly: System.Security.AllowPartiallyTrustedCallersAttribute()]

namespace MyNamespace
{
    [GuidAttribute("F4D15099-3407-4A7E-A607-DEA440CF3891")]
    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.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
    
    Public Overrides Sub InitializeNewDomain(ByVal appDomainInfo _
        As AppDomainSetup) 
        Console.Write("Initialize new domain called:  ")
        Console.WriteLine(AppDomain.CurrentDomain.FriendlyName)
        InitializationFlags = _
            AppDomainManagerInitializationOptions.RegisterWithHost   
    End Sub

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

Commenti

Importante

Non usare AppDomainManager per configurare un dominio applicazione in ASP.NET. In ASP.NET, la configurazione deve essere gestita dall'host.

L'implementazione della AppDomainManager classe consente a un'applicazione host di partecipare alla creazione di nuovi domini applicazione. Per sostituire l'impostazione predefinita AppDomainManager, identificare l'assembly e il tipo della sostituzione AppDomainManager nelle variabili di ambiente APPDOMAIN_MANAGER_ASM e APPDOMAIN_MANAGER_TYPE oppure usare gli <elementi appDomainManagerAssembly> e <appDomainManagerType> nel file di configurazione. L'assembly deve essere completamente attendibile ed essere contenuto nella Global Assembly Cache o nella directory dell'applicazione iniziale. I nomi di tipo e assembly devono essere completi nelle variabili di ambiente. Per esempio:

set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager

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

Importante

Se l'assembly che contiene la sottoclasse di AppDomainManager dipende dagli assembly contrassegnati con l'attributo CONDIZIONALe AllowPartiallyTrustedCallersAttribute (APTCA), è necessario includere tali assembly nell'elenco passato alla PartialTrustVisibleAssemblies proprietà dell'oggetto AppDomainSetup usato per creare domini applicazione. In caso contrario, gli assembly contrassegnati con l'attributo APTCA condizionale verranno disabilitati.

AppDomainManager è l'equivalente gestito dell'host non gestito. Un AppDomainManager oggetto partecipa alla creazione di nuovi domini applicazione in un processo e può personalizzare il nuovo AppDomain oggetto prima dell'esecuzione di altro codice gestito. AppDomainManager può anche fornire gestori host che partecipano ad altri aspetti dell'esecuzione di Common Language Runtime. Ad esempio, un AppDomainManager oggetto può identificare un HostSecurityManager oggetto che partecipa alle decisioni di sicurezza del dominio applicazione.

Annotazioni

Solo gli assembly concessi FullTrust, ad esempio gli assembly nella Global Assembly Cache o identificati come fullTrustAssemblies nel AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) metodo , possono essere caricati nel AppDomainManager costruttore e nel InitializeNewDomain metodo .

Annotazioni

Questa classe contiene una richiesta di collegamento e una richiesta di ereditarietà a livello di classe. Viene SecurityException generata un'eccezione quando il chiamante immediato o la classe derivata non dispone dell'autorizzazione dell'infrastruttura. Per informazioni dettagliate sulle richieste di sicurezza, vedere Richieste di collegamento e richieste di ereditarietà.

Costruttori

Nome Descrizione
AppDomainManager()

Inizializza una nuova istanza della classe AppDomainManager.

Proprietà

Nome Descrizione
ApplicationActivator

Ottiene l'attivatore dell'applicazione che gestisce l'attivazione di componenti aggiuntivi e applicazioni basate su manifesto per il dominio.

EntryAssembly

Ottiene l'assembly di immissione per un'applicazione.

HostExecutionContextManager

Ottiene il gestore del contesto di esecuzione host che gestisce il flusso del contesto di esecuzione.

HostSecurityManager

Ottiene il gestore della sicurezza host che partecipa alle decisioni di sicurezza per il dominio dell'applicazione.

InitializationFlags

Ottiene i flag di inizializzazione per i gestori di domini applicazione personalizzati.

Metodi

Nome Descrizione
CheckSecuritySettings(SecurityState)

Indica se l'operazione specificata è consentita nel dominio applicazione.

CreateDomain(String, Evidence, AppDomainSetup)

Restituisce un dominio applicazione nuovo o esistente.

CreateDomainHelper(String, Evidence, AppDomainSetup)

Fornisce un metodo helper per creare un dominio applicazione.

CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
InitializeNewDomain(AppDomainSetup)

Inizializza il nuovo dominio applicazione.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject .

(Ereditato da MarshalByRefObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a