AppDomainManager 類別

定義

提供 Unmanaged 主機的 Managed 對等項目。

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
繼承
AppDomainManager
屬性

範例

下列範例示範 的非常簡單實作 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

備註

重要

請勿使用 AppDomainManager 在 ASP.NET 中設定應用程式域。 在 ASP.NET 中,主機必須處理組態。

實作 AppDomainManager 類別可讓裝載應用程式參與建立新的應用程式域。 若要取代預設值 AppDomainManager ,請在APPDOMAIN_MANAGER_ASM和APPDOMAIN_MANAGER_TYPE環境變數中識別取代 AppDomainManager 的元件和類型,或使用< 組態檔中的 appDomainManagerAssembly >< appDomainManagerType >元素。 元件必須完全信任,且包含在全域組件快取或起始應用程式的目錄中。 類型和元件名稱在環境變數中必須完整。 例如:

set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager

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

重要

如果 包含子類別 AppDomainManager 的元件相依于以 AllowPartiallyTrustedCallersAttribute 條件式 (APTCA) 屬性標示的元件,您必須在傳遞給 PartialTrustVisibleAssemblies 用來建立應用程式域之 AppDomainSetup 屬性的清單中包含這些元件。 否則,將會停用以條件式 APTCA 屬性標記的元件。

AppDomainManager是 Unmanaged 主機的 Managed 對等專案。 AppDomainManager物件會參與在進程中建立新的應用程式域,而且可以在其他 Managed 程式碼執行之前自訂新的 AppDomainAppDomainManager也可以提供參與 Common Language Runtime 執行其他層面的主機管理員。 例如, AppDomainManager 可以識別 HostSecurityManager 參與應用程式域安全性決策的物件。

注意

只有授與 FullTrust 的元件,例如全域組件快取中的元件,或在 方法中識別為 fullTrustAssembliesAppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) 的元件,可以在建構函式和 InitializeNewDomain 方法中 AppDomainManager 載入。

注意

這個類別包含類別層級的連結需求和繼承需求。 SecurityException當立即呼叫端或衍生類別沒有基礎結構許可權時,就會擲回 。 如需安全性需求的詳細資訊,請參閱 連結需求繼承需求

建構函式

AppDomainManager()

初始化 AppDomainManager 類別的新執行個體。

屬性

ApplicationActivator

取得應用程式啟動項,這個應用程式啟動項會處理定義域中增益集和資訊清單架構應用程式的啟動。

EntryAssembly

取得應用程式的項目組件。

HostExecutionContextManager

取得管理執行內容流程的主機執行內容管理員。

HostSecurityManager

取得參與應用程式定義域安全性決策的主機安全性管理員。

InitializationFlags

取得自訂應用程式定義域管理員的初始設定旗標。

方法

CheckSecuritySettings(SecurityState)

表示應用程式定義域中是否允許指定的作業。

CreateDomain(String, Evidence, AppDomainSetup)

傳回新的或現有的應用程式定義域。

CreateDomainHelper(String, Evidence, AppDomainSetup)

提供建立應用程式定義域的 Helper 方法。

CreateObjRef(Type)

建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。

(繼承來源 MarshalByRefObject)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetLifetimeService()
已淘汰.

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個執行個體的存留期原則。

(繼承來源 MarshalByRefObject)
InitializeNewDomain(AppDomainSetup)

初始化新應用程式定義域。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 物件的淺層複本。

(繼承來源 MarshalByRefObject)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於