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
Это важно
Если сборка, содержащая подкласс 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) |