AppDomainManager Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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) |