AppDomainManager Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece um equivalente gerido de um host não gerido.
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
- Herança
- Atributos
Exemplos
O exemplo seguinte mostra uma implementação muito simples de 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
Observações
Importante
Não use AppDomainManager para configurar um domínio de aplicação em ASP.NET. No ASP.NET, a configuração deve ser tratada pelo anfitrião.
A implementação da AppDomainManager classe permite que uma aplicação de alojamento participe na criação de novos domínios de aplicação. Para substituir o padrão AppDomainManager, identifique o assembly e o tipo da substituição AppDomainManager nas variáveis de ambiente APPDOMAIN_MANAGER_ASM e APPDOMAIN_MANAGER_TYPE, ou use os <elementos appDomainManagerAssembly> e <appDomainManagerType> no seu ficheiro de configuração. O assembly deve ser totalmente confiável e estar contido na cache global de assembly ou no diretório da aplicação inicial. Os nomes do tipo e da assembleia devem ser totalmente qualificados nas variáveis de ambiente. Por exemplo:
set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager
set APPDOMAIN_MANAGER_ASM=customappDomainmanager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f1368f7b12a08d72
Importante
Se o assembly que contém a sua subclasse de AppDomainManager depende de assemblies marcados com o atributo AllowPartiallyTrustedCallersAttribute condicional (APTCA), deve incluir esses assemblies na lista que passa para a PartialTrustVisibleAssemblies propriedade de AppDomainSetup que utiliza para criar domínios de aplicação. Caso contrário, as assembleias marcadas com o atributo condicional APTCA serão desativadas.
O AppDomainManager é o equivalente gerido do hospedeiro não gerido. Um AppDomainManager objeto participa na criação de novos domínios de aplicação num processo e pode personalizar o novo AppDomain antes de outro código gerido ser executado. Podem AppDomainManager também fornecer gestores de host que participam noutros aspetos da execução em tempo de execução em linguagem comum. Por exemplo, um AppDomainManager pode identificar um HostSecurityManager objeto que participa nas decisões de segurança do domínio de aplicação.
Note
Apenas assemblies concedidos FullTrust, como assemblies na cache global de assembly ou identificados como fullTrustAssemblies no AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) método, podem ser carregados no AppDomainManager construtor e no InitializeNewDomain método.
Note
Esta classe contém uma exigência de ligação e uma exigência de herança ao nível da classe. A SecurityException é lançado quando o chamador imediato ou a classe derivada não têm permissão de infraestrutura. Para detalhes sobre exigências de segurança, consulte Exigências de Ligação e Exigências de Herança.
Construtores
| Name | Description |
|---|---|
| AppDomainManager() |
Inicializa uma nova instância da AppDomainManager classe. |
Propriedades
| Name | Description |
|---|---|
| ApplicationActivator |
Obtém o ativador de aplicação que gere a ativação de complementos e aplicações baseadas em manifestos para o domínio. |
| EntryAssembly |
Obtém o conjunto de entrada para uma aplicação. |
| HostExecutionContextManager |
Obtém o gestor de contexto de execução do host que gere o fluxo do contexto de execução. |
| HostSecurityManager |
Recebe o gestor de segurança do host que participa nas decisões de segurança do domínio da aplicação. |
| InitializationFlags |
Recebe as bandeiras de inicialização para gestores de domínio de aplicações personalizados. |
Métodos
| Name | Description |
|---|---|
| CheckSecuritySettings(SecurityState) |
Indica se a operação especificada é permitida no domínio da aplicação. |
| CreateDomain(String, Evidence, AppDomainSetup) |
Devolve um domínio de aplicação novo ou existente. |
| CreateDomainHelper(String, Evidence, AppDomainSetup) |
Fornece um método auxiliar para criar um domínio de aplicação. |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| InitializeNewDomain(AppDomainSetup) |
Inicializa o novo domínio de aplicação. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |