AppDomainManager Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine verwaltete Entsprechung eines nicht verwalteten Hosts dar.
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
- Vererbung
- Attribute
Beispiele
Das folgende Beispiel zeigt eine sehr einfache Implementierung von 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
Hinweise
Wichtig
Verwenden AppDomainManager Sie nicht zum Konfigurieren einer Anwendungsdomäne in ASP.NET. In ASP.NET muss die Konfiguration vom Host verarbeitet werden.
Durch die Implementierung der AppDomainManager -Klasse kann eine Hostinganwendung an der Erstellung neuer Anwendungsdomänen teilnehmen. Um den Standard AppDomainManagerzu ersetzen, geben Sie die Assembly und den Typ der Ersetzung AppDomainManager in den APPDOMAIN_MANAGER_ASM- und APPDOMAIN_MANAGER_TYPE Umgebungsvariablen an, oder verwenden Sie die <Elemente appDomainManagerAssembly> und <appDomainManagerType> in Ihrer Konfigurationsdatei. Die Assembly muss vollständig vertrauenswürdig sein und im globalen Assemblycache oder im Verzeichnis der Startanwendung enthalten sein. Die Typen- und Assemblynamen müssen in den Umgebungsvariablen voll qualifiziert sein. Beispiel:
set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager
set APPDOMAIN_MANAGER_ASM=customappDomainmanager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f1368f7b12a08d72
Wichtig
Wenn die Assembly, die Ihre Unterklasse von AppDomainManager enthält, von Assemblys abhängt, die mit dem bedingten AllowPartiallyTrustedCallersAttribute Attribut (APTCA) gekennzeichnet sind, müssen Sie diese Assemblys in die Liste aufnehmen, die Sie an die PartialTrustVisibleAssemblies -Eigenschaft der übergeben, die AppDomainSetup Sie zum Erstellen von Anwendungsdomänen verwenden. Andernfalls werden die Assemblys, die mit dem bedingten APTCA-Attribut gekennzeichnet sind, deaktiviert.
Ist AppDomainManager das verwaltete Äquivalent des nicht verwalteten Hosts. Ein AppDomainManager -Objekt beteiligt sich an der Erstellung neuer Anwendungsdomänen in einem Prozess und kann das neue AppDomain anpassen, bevor anderer verwalteter Code ausgeführt wird. Die AppDomainManager kann auch Host-Manager bereitstellen, die an anderen Aspekten der Common Language Runtime-Ausführung beteiligt sind. Ein AppDomainManager kann beispielsweise ein HostSecurityManager -Objekt identifizieren, das an den Sicherheitsentscheidungen der Anwendungsdomäne beteiligt ist.
Hinweis
Nur assemblys, die gewährt wurden FullTrust
, z. B. Assemblys im globalen Assemblycache oder als fullTrustAssemblies
in der AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) -Methode identifiziert, können in den Konstruktor und die AppDomainManagerInitializeNewDomain -Methode geladen werden.
Hinweis
Diese Klasse enthält eine Linkanforderung und eine Vererbungsanforderung auf Klassenebene. Ein SecurityException wird ausgelöst, wenn entweder der unmittelbare Aufrufer oder die abgeleitete Klasse keine Infrastrukturberechtigung besitzt. Ausführliche Informationen zu Sicherheitsanforderungen finden Sie unter Verknüpfen von Anforderungen und Erbansprüchen.
Konstruktoren
AppDomainManager() |
Initialisiert eine neue Instanz der AppDomainManager-Klasse. |
Eigenschaften
ApplicationActivator |
Ruft den Anwendungsaktivierer ab, der die Aktivierung von Add-Ins und manifestbasierten Anwendungen für die Domäne handhabt. |
EntryAssembly |
Ruft die Eintragsassembly für eine Anwendung ab. |
HostExecutionContextManager |
Ruft den Hostausführungskontext-Manager ab, der den Fluss vom Ausführungskontext verwaltet. |
HostSecurityManager |
Ruft den Hostsicherheits-Manager ab, der an Sicherheitsentscheidungen für die Anwendungsdomäne teilnimmt. |
InitializationFlags |
Ruft die Initialisierungsflags für benutzerdefinierte Anwendungsdomänen-Manager ab. |
Methoden
CheckSecuritySettings(SecurityState) |
Gibt an, ob der angegebene Vorgang in der Anwendungsdomäne zulässig ist. |
CreateDomain(String, Evidence, AppDomainSetup) |
Gibt eine neue oder vorhandene Anwendungsdomäne zurück. |
CreateDomainHelper(String, Evidence, AppDomainSetup) |
Stellt eine Hilfsmethode zum Erstellen einer Anwendungsdomäne bereit. |
CreateObjRef(Type) |
Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. (Geerbt von MarshalByRefObject) |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetLifetimeService() |
Veraltet.
Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Geerbt von MarshalByRefObject) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
InitializeLifetimeService() |
Veraltet.
Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab. (Geerbt von MarshalByRefObject) |
InitializeNewDomain(AppDomainSetup) |
Initialisiert die neue Anwendungsdomäne. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
MemberwiseClone(Boolean) |
Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Geerbt von MarshalByRefObject) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |