AppDomainManager 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供 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。
// 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 程式代碼執行之前自定義新的 AppDomain 。 AppDomainManager也可以提供參與 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) |