AppDomainManager Classe

Definição

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

Aplica-se a