Teilen über


AppDomainManager Klasse

Definition

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
AppDomainManager
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)

Gilt für: