AppDomainManager 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供非托管宿主的托管等效项。
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 中标识替换 AppDomainManager 程序集和类型,并APPDOMAIN_MANAGER_TYPE环境变量,或使用 <配置文件中的 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是非托管主机的托管等效项。 对象 AppDomainManager 参与进程中的新应用程序域的创建,并且可以在其他托管代码运行之前自定义新的 AppDomain 。 AppDomainManager还可以提供参与公共语言运行时执行的其他方面的主机管理器。 例如, 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) |
提供帮助器方法以创建一个应用程序域。 |
CreateObjRef(Type) |
创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject) |
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetLifetimeService() |
已过时.
检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
InitializeLifetimeService() |
已过时.
获取生存期服务对象来控制此实例的生存期策略。 (继承自 MarshalByRefObject) |
InitializeNewDomain(AppDomainSetup) |
初始化新应用程序域。 |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
MemberwiseClone(Boolean) |
创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈