AppDomainManager AppDomainManager AppDomainManager AppDomainManager Class

Определение

Предоставляет управляемый эквивалент неуправляемого основного приложения.Provides a managed equivalent of an unmanaged host.

public ref class AppDomainManager : MarshalByRefObject
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public class AppDomainManager : MarshalByRefObject
type AppDomainManager = class
    inherit MarshalByRefObject
Public Class AppDomainManager
Inherits MarshalByRefObject
Наследование
AppDomainManagerAppDomainManagerAppDomainManagerAppDomainManager
Атрибуты

Примеры

Следующий пример показывает очень простую реализацию AppDomainManager.The following example shows a very simple implementation of 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.Permissions;
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")]
    [SecurityPermissionAttribute(SecurityAction.LinkDemand, 
        Flags = SecurityPermissionFlag.Infrastructure)]
    [SecurityPermissionAttribute(SecurityAction.InheritanceDemand, 
        Flags = SecurityPermissionFlag.Infrastructure)]
    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
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 'New
    
    Public Overrides Sub InitializeNewDomain(ByVal appDomainInfo _
        As AppDomainSetup) 
        Console.Write("Initialize new domain called:  ")
        Console.WriteLine(AppDomain.CurrentDomain.FriendlyName)
        InitializationFlags = _
            AppDomainManagerInitializationOptions.RegisterWithHost   
    End Sub 'InitializeNewDomain

    Public Overrides ReadOnly Property HostSecurityManager() _
        As HostSecurityManager 
        Get
            Return mySecurityManager
        End Get
    End Property
End Class 'MyAppDomainManager 

Комментарии

Важно!

Не используйте AppDomainManager для настройки домена приложения в ASP.NET.Do not use AppDomainManager to configure an application domain in ASP.NET. В ASP.NET должен обрабатывать конфигурации узла.In ASP.NET, configuration must be handled by the host.

Реализация AppDomainManager класс позволяет приложению размещения участвовать в создании новых доменов приложений.Implementing the AppDomainManager class enables a hosting application to participate in the creation of new application domains. Чтобы заменить значение по умолчанию AppDomainManager, определения сборки и тип замены AppDomainManager в APPDOMAIN_MANAGER_ASM и APPDOMAIN_MANAGER_TYPE переменные среды, или с использованием <appDomainManagerAssembly > и <appDomainManagerType > элементов в файле конфигурации.To replace the default AppDomainManager, identify the assembly and type of the replacement AppDomainManager in the APPDOMAIN_MANAGER_ASM and APPDOMAIN_MANAGER_TYPE environment variables, or use the <appDomainManagerAssembly> and <appDomainManagerType> elements in your configuration file. Сборка должна иметь полное доверие и находиться в глобальном кэше сборок или в каталоге запускаемого приложения.The assembly must be fully trusted and be contained in the global assembly cache or the directory of the starting application. Имена типов и сборок должен быть полным в переменных среды.The type and assembly names must be fully qualified in the environment variables. Например:For example:

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использовалась для создания доменов приложений.If the assembly that contains your subclass of AppDomainManager depends on assemblies that are marked with the conditional AllowPartiallyTrustedCallersAttribute (APTCA) attribute, you must include those assemblies in the list that you pass to the PartialTrustVisibleAssemblies property of the AppDomainSetup you use to create application domains. В противном случае будут отключены сборки с условным атрибутом APTCA.Otherwise, the assemblies that are marked with the conditional APTCA attribute will be disabled.

AppDomainManager Является управляемый эквивалент неуправляемого основного приложения.The AppDomainManager is the managed equivalent of the unmanaged host. AppDomainManager Объект участвует в создании новых доменов приложений в процессе и можно настроить новый AppDomain перед запуском другого управляемого кода.An AppDomainManager object participates in the creation of new application domains in a process and can customize the new AppDomain before other managed code runs. AppDomainManager Может также содержать диспетчеры узлов, участвующих в другие аспекты выполнения среды.The AppDomainManager can also supply host managers that participate in other aspects of common language runtime execution. Например AppDomainManager можно определить HostSecurityManager объект, участвующий в решения относительно безопасности домена приложения.For example, an AppDomainManager can identify a HostSecurityManager object that participates in the security decisions of the application domain.

Примечание

Только те сборки, которые предоставлены FullTrust, таких как сборки в глобальный кэш сборок так и идентифицированным как fullTrustAssemblies в AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) метод может быть загружен в AppDomainManager конструктор и InitializeNewDomain метод.Only assemblies granted FullTrust, such as assemblies in the global assembly cache or identified as fullTrustAssemblies in the AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) method can be loaded in the AppDomainManager constructor and the InitializeNewDomain method.

Примечание

Этот класс содержит запрос компоновки и требования наследования на уровне класса.This class contains a link demand and an inheritance demand at the class level. Объект SecurityException возникает, если непосредственный вызывающий оператор или производного класса не имеет разрешения инфраструктуры.A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. Дополнительные сведения о требованиях безопасности см. в разделе требования связывания и требования наследования.For details about security demands, see Link Demands and Inheritance Demands.

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

AppDomainManager() AppDomainManager() AppDomainManager() AppDomainManager()

Инициализирует новый экземпляр класса AppDomainManager.Initializes a new instance of the AppDomainManager class.

Свойства

ApplicationActivator ApplicationActivator ApplicationActivator ApplicationActivator

Возвращает активатор, управляющий активацией предназначенных для домена надстроек и приложений на основе манифеста.Gets the application activator that handles the activation of add-ins and manifest-based applications for the domain.

EntryAssembly EntryAssembly EntryAssembly EntryAssembly

Возвращает входную сборку для приложения.Gets the entry assembly for an application.

HostExecutionContextManager HostExecutionContextManager HostExecutionContextManager HostExecutionContextManager

Возвращает диспетчер контекста выполнения сайта, управляющий потоком контекста выполнения.Gets the host execution context manager that manages the flow of the execution context.

HostSecurityManager HostSecurityManager HostSecurityManager HostSecurityManager

Возвращает диспетчер безопасности сайта, который участвует в принятии решений относительно безопасности домена приложения.Gets the host security manager that participates in security decisions for the application domain.

InitializationFlags InitializationFlags InitializationFlags InitializationFlags

Возвращает флаги инициализации для диспетчеров пользовательских доменов приложений.Gets the initialization flags for custom application domain managers.

Методы

CheckSecuritySettings(SecurityState) CheckSecuritySettings(SecurityState) CheckSecuritySettings(SecurityState) CheckSecuritySettings(SecurityState)

Показывает, разрешена ли заданная операция в домене приложения.Indicates whether the specified operation is allowed in the application domain.

CreateDomain(String, Evidence, AppDomainSetup) CreateDomain(String, Evidence, AppDomainSetup) CreateDomain(String, Evidence, AppDomainSetup) CreateDomain(String, Evidence, AppDomainSetup)

Возвращает новый или существующий домен приложения.Returns a new or existing application domain.

CreateDomainHelper(String, Evidence, AppDomainSetup) CreateDomainHelper(String, Evidence, AppDomainSetup) CreateDomainHelper(String, Evidence, AppDomainSetup) CreateDomainHelper(String, Evidence, AppDomainSetup)

Предоставляет вспомогательный метод для создания домена приложения.Provides a helper method to create an application domain.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
InitializeNewDomain(AppDomainSetup) InitializeNewDomain(AppDomainSetup) InitializeNewDomain(AppDomainSetup) InitializeNewDomain(AppDomainSetup)

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

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Безопасность

SecurityCriticalAttribute
Требует полного доверия для непосредственного вызывающего объекта.Requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

InheritanceDemand
для производных классов подключать исполняемого кода среда размещения инфраструктуры.for derived classes to plug executable code into the common language runtime hosting infrastructure. Связанное перечисление: Infrastructure.Associated enumeration: Infrastructure.

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