AppDomainManager Class
Collapse the table of content
Expand the table of content

AppDomainManager Class


Provides a managed equivalent of an unmanaged host.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)


	Flags = SecurityPermissionFlag.Infrastructure)]
public class AppDomainManager : MarshalByRefObject


Initializes a new instance of the AppDomainManager class.


Gets the application activator that handles the activation of add-ins and manifest-based applications for the domain.


Gets the entry assembly for an application.


Gets the host execution context manager that manages the flow of the execution context.


Gets the host security manager that participates in security decisions for the application domain.


Gets the initialization flags for custom application domain managers.


Indicates whether the specified operation is allowed in the application domain.

System_CAPS_pubmethodCreateDomain(String, Evidence, AppDomainSetup)

Returns a new or existing application domain.

System_CAPS_protmethodSystem_CAPS_staticCreateDomainHelper(String, Evidence, AppDomainSetup)

Provides a helper method to create an application domain.


Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.(Inherited from MarshalByRefObject.)


Determines whether the specified object is equal to the current object.(Inherited from Object.)


Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)


Serves as the default hash function. (Inherited from Object.)


Retrieves the current lifetime service object that controls the lifetime policy for this instance.(Inherited from MarshalByRefObject.)


Gets the Type of the current instance.(Inherited from Object.)


Obtains a lifetime service object to control the lifetime policy for this instance.(Inherited from MarshalByRefObject.)


Initializes the new application domain.


Creates a shallow copy of the current Object.(Inherited from Object.)


Creates a shallow copy of the current MarshalByRefObject object.(Inherited from MarshalByRefObject.)


Returns a string that represents the current object.(Inherited from Object.)

Exception Condition

The caller does not have the correct permissions. See the Requirements section.


Do not use AppDomainManager to configure an application domain in ASP.NET. In ASP.NET, configuration must be handled by the host.

Implementing the AppDomainManager class enables a hosting application to participate in the creation of new application domains. To replace the default AppDomainManager, identify the assembly and type of the replacement AppDomainManager in the APPDOMAIN_MANAGER_ASM and APPDOMAIN_MANAGER_TYPE environment variables, or use the and elements in your configuration file. The assembly must be fully trusted and be contained in the global assembly cache or the directory of the starting application. The type and assembly names must be fully qualified in the environment variables. For example:

set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager

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


If the assembly that contains your subclass of AppDomainManager depends on assemblies that are marked with the conditional AllowPartiallyTrustedCallersAttribute (APTCA) attribute, you must include those assemblies in the list that you pass to the PartialTrustVisibleAssemblies property of the AppDomainSetup you use to create application domains. Otherwise, the assemblies that are marked with the conditional APTCA attribute will be disabled.

The AppDomainManager is the managed equivalent of the unmanaged host. An AppDomainManager object participates in the creation of new application domains in a process and can customize the new AppDomain before other managed code runs. The AppDomainManager can also supply host managers that participate in other aspects of common language runtime execution. For example, an AppDomainManager can identify a HostSecurityManager object that participates in the security decisions of the application domain.


Only assemblies granted FullTrust, such as assemblies in the global assembly cache or identified as fullTrustAssemblies in the AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) method can be loaded in the AppDomainManager constructor and the InitializeNewDomain method.


This class contains a link demand and an inheritance demand at the class level. A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. For details about security demands, see Link Demands and Inheritance Demands.

The following example shows a very simple implementation of AppDomainManager.

// To replace the default AppDomainManager, identify  the 
// replacement assembly and replacement type in the 
// environment variables. For example:
// set APPDOMAIN_MANAGER_TYPE=library.TestAppDomainManager
// set APPDOMAIN_MANAGER_ASM=library, Version=, Culture=neutral, PublicKeyToken=f1368f7b12a08d72

using System;
using System.Collections;
using System.Net;
using System.Reflection;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.Security.Principal;
using System.Threading;
using System.Runtime.InteropServices;

[assembly: System.Security.AllowPartiallyTrustedCallersAttribute()]

namespace MyNamespace
        Flags = SecurityPermissionFlag.Infrastructure)]
        Flags = SecurityPermissionFlag.Infrastructure)]
    public class MyAppDomainManager : AppDomainManager
        private HostSecurityManager mySecurityManager = null;

        public MyAppDomainManager()
            Console.WriteLine(" My AppDomain Manager ");
            mySecurityManager = AppDomain.CurrentDomain.CreateInstanceAndUnwrap(
                "CustomSecurityManager, Version=, Culture=neutral, " +
                "MyNamespace.MySecurityManager") as HostSecurityManager;
            Console.WriteLine(" Custom Security Manager Created.");

        public override void InitializeNewDomain(AppDomainSetup appDomainInfo)
            Console.Write("Initialize new domain called:  ");
            InitializationFlags = 

        public override HostSecurityManager HostSecurityManager
                return mySecurityManager;


Requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.


for derived classes to plug executable code into the common language runtime hosting infrastructure. Associated enumeration: SecurityPermissionFlag.Infrastructure.

.NET Framework
Available since 2.0
Available since 2.0
Windows Phone Silverlight
Available since 7.0

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
© 2015 Microsoft