Bagikan melalui


AppDomainManager Kelas

Definisi

Menyediakan setara terkelola dari host yang tidak dikelola.

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
Warisan
AppDomainManager
Atribut

Contoh

Contoh berikut menunjukkan implementasi yang sangat sederhana dari 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

Keterangan

Penting

Jangan gunakan AppDomainManager untuk mengonfigurasi domain aplikasi di ASP.NET. Dalam ASP.NET, konfigurasi harus ditangani oleh host.

Menerapkan AppDomainManager kelas memungkinkan aplikasi hosting untuk berpartisipasi dalam pembuatan domain aplikasi baru. Untuk mengganti default AppDomainManager, identifikasi perakitan dan jenis penggantian AppDomainManager dalam variabel lingkungan APPDOMAIN_MANAGER_ASM dan APPDOMAIN_MANAGER_TYPE, atau gunakan <elemen appDomainManagerAssembly> dan <appDomainManagerType> dalam file konfigurasi Anda. Perakitan harus sepenuhnya dipercaya dan terkandung dalam cache perakitan global atau direktori aplikasi awal. Jenis dan nama rakitan harus sepenuhnya memenuhi syarat dalam variabel lingkungan. Contohnya:

set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager

set APPDOMAIN_MANAGER_ASM=customappDomainmanager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f1368f7b12a08d72

Penting

Jika rakitan yang berisi subkelas AppDomainManager Anda bergantung pada rakitan yang ditandai dengan atribut kondisional AllowPartiallyTrustedCallersAttribute (APTCA), Anda harus menyertakan rakitan tersebut dalam daftar yang Anda berikan ke PartialTrustVisibleAssemblies properti yang AppDomainSetup Anda gunakan untuk membuat domain aplikasi. Jika tidak, rakitan yang ditandai dengan atribut APTCA kondisional akan dinonaktifkan.

AppDomainManager adalah yang dikelola setara dengan host yang tidak dikelola. Objek AppDomainManager berpartisipasi dalam pembuatan domain aplikasi baru dalam proses dan dapat menyesuaikan yang baru AppDomain sebelum kode terkelola lainnya berjalan. juga AppDomainManager dapat menyediakan manajer host yang berpartisipasi dalam aspek lain dari eksekusi runtime bahasa umum. Misalnya, AppDomainManager dapat mengidentifikasi HostSecurityManager objek yang berpartisipasi dalam keputusan keamanan domain aplikasi.

Catatan

Hanya rakitan yang diberikan FullTrust, seperti rakitan di cache perakitan global atau diidentifikasi seperti fullTrustAssemblies dalam AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) metode yang dapat dimuat dalam AppDomainManager konstruktor dan InitializeNewDomain metode .

Catatan

Kelas ini berisi permintaan tautan dan permintaan warisan di tingkat kelas. SecurityException dilemparkan ketika pemanggil langsung atau kelas turunan tidak memiliki izin infrastruktur. Untuk detail tentang tuntutan keamanan, lihat Permintaan Tautan dan Permintaan Warisan.

Konstruktor

AppDomainManager()

Menginisialisasi instans baru kelas AppDomainManager.

Properti

ApplicationActivator

Mendapatkan aktivator aplikasi yang menangani aktivasi add-in dan aplikasi berbasis manifes untuk domain.

EntryAssembly

Mendapatkan rakitan entri untuk aplikasi.

HostExecutionContextManager

Mendapatkan pengelola konteks eksekusi host yang mengelola alur konteks eksekusi.

HostSecurityManager

Mendapatkan manajer keamanan host yang berpartisipasi dalam keputusan keamanan untuk domain aplikasi.

InitializationFlags

Mendapatkan bendera inisialisasi untuk manajer domain aplikasi kustom.

Metode

CheckSecuritySettings(SecurityState)

Menunjukkan apakah operasi yang ditentukan diizinkan di domain aplikasi.

CreateDomain(String, Evidence, AppDomainSetup)

Mengembalikan domain aplikasi baru atau yang sudah ada.

CreateDomainHelper(String, Evidence, AppDomainSetup)

Menyediakan metode pembantu untuk membuat domain aplikasi.

CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
InitializeNewDomain(AppDomainSetup)

Menginisialisasi domain aplikasi baru.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk