AppDomainManager Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece um equivalente gerenciado de um host não gerenciado.
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 a seguir 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
Comentários
Importante
Não use AppDomainManager para configurar um domínio de aplicativo no ASP.NET. Em ASP.NET, a configuração deve ser tratada pelo host.
Implementar a AppDomainManager classe permite que um aplicativo de hospedagem participe da criação de novos domínios de aplicativo. 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 arquivo de configuração. O assembly deve ser totalmente confiável e estar contido no cache de assembly global ou no diretório do aplicativo inicial. Os nomes de tipo e assembly 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 sua subclasse de depender de AppDomainManager assemblies marcados com o atributo condicional AllowPartiallyTrustedCallersAttribute (APTCA), você deverá incluir esses assemblies na lista que você passa para a PartialTrustVisibleAssemblies propriedade do AppDomainSetup que você usa para criar domínios de aplicativo. Caso contrário, os assemblies marcados com o atributo APTCA condicional serão desabilitados.
O AppDomainManager é o equivalente gerenciado do host não gerenciado. Um AppDomainManager objeto participa da criação de novos domínios de aplicativo em um processo e pode personalizar o novo AppDomain antes que outro código gerenciado seja executado. O AppDomainManager também pode fornecer gerenciadores de host que participam de outros aspectos da execução do Common Language Runtime. Por exemplo, um AppDomainManager pode identificar um HostSecurityManager objeto que participa das decisões de segurança do domínio do aplicativo.
Observação
Somente assemblies concedidos FullTrust
, como assemblies no cache de assembly global 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 .
Observação
Essa classe contém uma demanda de link e uma demanda de herança no nível da classe. Um SecurityException é gerado quando o chamador imediato ou a classe derivada não tem permissão de infraestrutura. Para obter detalhes sobre demandas de segurança, consulte Vincular demandas e demandas de herança.
Construtores
AppDomainManager() |
Inicializa uma nova instância da classe AppDomainManager. |
Propriedades
ApplicationActivator |
Obtém o ativador do aplicativo que lida com a ativação de suplementos e aplicativos baseados em manifesto para o domínio. |
EntryAssembly |
Obtém o assembly de entrada para um aplicativo. |
HostExecutionContextManager |
Obtém o gerenciador de contexto de execução do host que gerencia o fluxo do contexto de execução. |
HostSecurityManager |
Obtém o gerenciador de segurança do host que participa das decisões de segurança para o domínio do aplicativo. |
InitializationFlags |
Obtém os sinalizadores de inicialização para gerenciadores de domínio de aplicativo personalizado. |
Métodos
CheckSecuritySettings(SecurityState) |
Indica se a operação especificada é permitida no domínio do aplicativo. |
CreateDomain(String, Evidence, AppDomainSetup) |
Retorna um domínio de aplicativo novo ou existente. |
CreateDomainHelper(String, Evidence, AppDomainSetup) |
Fornece um método auxiliar para criar um domínio de aplicativo. |
CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se 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 a função de hash padrão. (Herdado de Object) |
GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância. (Herdado de MarshalByRefObject) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
InitializeNewDomain(AppDomainSetup) |
Inicializa o novo domínio de aplicativo. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto MarshalByRefObject atual. (Herdado de MarshalByRefObject) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |