Sdílet prostřednictvím


AppDomainManager Třída

Definice

Poskytuje spravovaný ekvivalent nespravovaného hostitele.

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
Dědičnost
AppDomainManager
Atributy

Příklady

Následující příklad ukazuje velmi jednoduchou implementaci 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

Poznámky

Důležité

Nepoužívejte AppDomainManager ke konfiguraci domény aplikace v ASP.NET. V ASP.NET musí být konfigurace zpracována hostitelem.

AppDomainManager Implementace třídy umožňuje hostitelské aplikaci účastnit se vytváření nových domén aplikace. Chcete-li nahradit výchozí AppDomainManager, identifikujte sestavení a typ nahrazení AppDomainManager v APPDOMAIN_MANAGER_ASM a APPDOMAIN_MANAGER_TYPE proměnných prostředí, nebo použijte <appDomainManagerAssembly> a<appDomainManagerType> elementy v konfiguračním souboru. Sestavení musí být plně důvěryhodné a musí být obsaženo v globální mezipaměti sestavení nebo adresáři spouštěcí aplikace. Názvy typů a sestavení musí být plně kvalifikované v proměnných prostředí. Například:

set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager

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

Důležité

Pokud sestavení obsahující vaši podtřídu AppDomainManager závisí na sestaveních označených podmíněným AllowPartiallyTrustedCallersAttribute atributem (APTCA), musíte tato sestavení zahrnout do PartialTrustVisibleAssemblies seznamu, které předáte vlastnosti AppDomainSetup používané k vytvoření domén aplikace. V opačném případě budou sestavení označená podmíněným atributem APTCA zakázána.

Jedná se AppDomainManager o spravovaný ekvivalent nespravovaného hostitele. Objekt AppDomainManager se účastní vytváření nových domén aplikace v procesu a může jej přizpůsobit AppDomain před spuštěním jiného spravovaného kódu. Může AppDomainManager také poskytovat správce hostitelů, kteří se účastní dalších aspektů provádění modulu CLR (Common Language Runtime). Může například AppDomainManager identifikovat HostSecurityManager objekt, který se účastní rozhodnutí o zabezpečení domény aplikace.

Poznámka:

Do konstruktoru a InitializeNewDomain metody lze načíst AppDomainManager pouze sestavení udělená FullTrust, například sestavení v globální mezipaměti sestavení nebo identifikovaná jako fullTrustAssemblies v AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) metodě.

Poznámka:

Tato třída obsahuje poptávku propojení a požadavek dědičnosti na úrovni třídy. Vyvolá SecurityException se, když buď bezprostřední volající, nebo odvozená třída nemá oprávnění infrastruktury. Podrobnosti o požadavcích na zabezpečení najdete v tématu Požadavky na propojení a požadavky dědičnosti.

Konstruktory

Name Description
AppDomainManager()

Inicializuje novou instanci AppDomainManager třídy.

Vlastnosti

Name Description
ApplicationActivator

Získá aktivátor aplikace, který zpracovává aktivaci doplňků a aplikací založených na manifestu pro doménu.

EntryAssembly

Získá vstupní sestavení pro aplikaci.

HostExecutionContextManager

Získá správce kontextu spouštění hostitele, který spravuje tok kontextu spuštění.

HostSecurityManager

Získá správce zabezpečení hostitele, který se účastní rozhodnutí o zabezpečení pro doménu aplikace.

InitializationFlags

Získá příznaky inicializace pro vlastní správce domény aplikace.

Metody

Name Description
CheckSecuritySettings(SecurityState)

Určuje, jestli je zadaná operace povolená v doméně aplikace.

CreateDomain(String, Evidence, AppDomainSetup)

Vrátí novou nebo existující doménu aplikace.

CreateDomainHelper(String, Evidence, AppDomainSetup)

Poskytuje pomocnou metodu pro vytvoření domény aplikace.

CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
InitializeNewDomain(AppDomainSetup)

Inicializuje novou doménu aplikace.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro