Поделиться через


AppDomainManager Класс

Определение

Предоставляет управляемый эквивалент неуправляемого узла.

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
Наследование
AppDomainManager
Атрибуты

Примеры

В следующем примере показана очень простая реализация 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

Комментарии

Это важно

Не используйте AppDomainManager для настройки домена приложения в ASP.NET. В ASP.NET конфигурация должна обрабатываться узлом.

AppDomainManager Реализация класса позволяет приложению размещения участвовать в создании новых доменов приложений. Чтобы заменить значение по умолчанию AppDomainManager, определите сборку и тип замены AppDomainManager в переменных среды APPDOMAIN_MANAGER_ASM и APPDOMAIN_MANAGER_TYPE среды или используйте <элементы appDomainManagerAssembly> и <appDomainManagerType> в файле конфигурации. Сборка должна быть полностью доверенной и содержаться в глобальном кэше сборок или каталоге начального приложения. Имена типов и сборок должны быть полны в переменных среды. Рассмотрим пример.

set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager

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

Это важно

Если сборка, содержащая подкласс AppDomainManager , зависит от сборок, помеченных атрибутом условного AllowPartiallyTrustedCallersAttribute (APTCA), необходимо включить эти сборки в список, который передается PartialTrustVisibleAssemblies свойству используемого AppDomainSetup для создания доменов приложений. В противном случае сборки, помеченные условным атрибутом APTCA, будут отключены.

Это AppDomainManager управляемый эквивалент неуправляемого узла. Объект AppDomainManager участвует в создании доменов приложений в процессе и может настроить его AppDomain перед выполнением другого управляемого кода. Кроме того, AppDomainManager они могут предоставлять диспетчерам узлов, участвующим в других аспектах выполнения среды CLR. Например, AppDomainManager можно определить объект, участвующий HostSecurityManager в решениях по безопасности домена приложения.

Замечание

В конструкторе и методе можно загрузить только сборки, такие как сборки FullTrustв глобальном кэше сборок или указанные как fullTrustAssembliesAppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) в методеInitializeNewDomain.AppDomainManager

Замечание

Этот класс содержит запрос ссылки и наследование на уровне класса. Возникает SecurityException , если непосредственный вызывающий или производный класс не имеют разрешения инфраструктуры. Дополнительные сведения о требованиях к безопасности см. в разделе "Ссылки" и "Запросы на наследование".

Конструкторы

Имя Описание
AppDomainManager()

Инициализирует новый экземпляр класса AppDomainManager.

Свойства

Имя Описание
ApplicationActivator

Возвращает активатор приложения, который обрабатывает активацию надстроек и приложений на основе манифеста для домена.

EntryAssembly

Возвращает сборку записи для приложения.

HostExecutionContextManager

Возвращает диспетчер контекста выполнения узла, который управляет потоком контекста выполнения.

HostSecurityManager

Возвращает диспетчер безопасности узла, который участвует в решениях по безопасности для домена приложения.

InitializationFlags

Возвращает флаги инициализации для диспетчеров доменов пользовательского приложения.

Методы

Имя Описание
CheckSecuritySettings(SecurityState)

Указывает, разрешена ли указанная операция в домене приложения.

CreateDomain(String, Evidence, AppDomainSetup)

Возвращает новый или существующий домен приложения.

CreateDomainHelper(String, Evidence, AppDomainSetup)

Предоставляет вспомогательный метод для создания домена приложения.

CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
InitializeNewDomain(AppDomainSetup)

Инициализирует новый домен приложения.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к