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.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.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 атрибутом Conditional (APTCA), необходимо включить эти сборки в список, который передается PartialTrustVisibleAssemblies свойству, AppDomainSetup используемому для создания доменов приложений. В противном случае сборки, помеченные атрибутом APTCA Conditional, будут отключены.

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

Примечание

Только предоставленные сборки FullTrust , такие как сборки в глобальном кэше сборок или определенные как fullTrustAssemblies в AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) методе, можно загрузить в AppDomainManager конструктор и 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)

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