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.
// 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) |