Compartilhar via


AppDomainManager Classe

Definição

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
AppDomainManager
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)

Aplica-se a