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


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

Важно!

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

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

Примечание

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

Примечание

Этот класс содержит требование ссылки и требование наследования на уровне класса. Возникает 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)

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