共用方式為


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的元件,例如全域程式集緩存中的元件,或在方法中AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[])識別為 fullTrustAssemblies 的元件,可以在建構函式和 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)

適用於