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

Nell'esempio seguente viene illustrata 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 di hosting di partecipare alla creazione di nuovi domini dell'applicazione. Per sostituire l'impostazione predefinitaAppDomainManager, identificare l'assembly e il tipo della sostituzione AppDomainManager nella APPDOMAIN_MANAGER_ASM e APPDOMAIN_MANAGER_TYPE variabili di ambiente oppure usare gli <elementi appDomainManagerAssembly> e<appDomainManagerType> nel file di configurazione. L'assembly deve essere completamente attendibile e deve 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. Ad 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 contenente la sottoclasse di AppDomainManager dipende dagli assembly contrassegnati con l'attributo APTCA condizionale AllowPartiallyTrustedCallersAttribute , è necessario includere tali assembly nell'elenco che si passa alla PartialTrustVisibleAssemblies proprietà dell'oggetto AppDomainSetup usato per creare domini dell'applicazione. In caso contrario, gli assembly contrassegnati con l'attributo APTCA condizionale verranno disabilitati.

L'oggetto 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 prima dell'esecuzione di altri codici gestiti. L'oggetto AppDomainManager può anche fornire gestori host che partecipano ad altri aspetti dell'esecuzione di Common Language Runtime. Ad esempio, un oggetto AppDomainManager può identificare un HostSecurityManager oggetto che partecipa alle decisioni di sicurezza del dominio applicazione.

Nota

Solo gli assembly concessi FullTrust, ad esempio 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 .

Nota

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

Costruttori

AppDomainManager()

Inizializza una nuova istanza della classe AppDomainManager.

Proprietà

ApplicationActivator

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

EntryAssembly

Ottiene l'assembly di ingresso per un'applicazione.

HostExecutionContextManager

Ottiene il gestore di contesto di esecuzione host per il flusso del contesto di esecuzione.

HostSecurityManager

Ottiene il gestore della sicurezza host che partecipa al processo decisionale sulla sicurezza per il dominio applicazione.

InitializationFlags

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

Metodi

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 di supporto per creare un dominio applicazione.

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione 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.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene l'oggetto 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 dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a