Does ASP.NET need to be configured for Full Trust to implement 'PageHandlerFactory' ?

Posted by Kev on Stack Overflow See other posts from Stack Overflow or by Kev
Published on 2009-05-19T15:49:17Z Indexed on 2010/04/21 18:03 UTC
Read the original article Hit count: 307

Filed under:
|
|

Our hosting platform (running IIS6/ASP.NET 2.0) is configured to run under partial trust. In the machine wide web.config file we set the ASP.NET trust level to Medium (and lock to prevent overrides) and use a modified policy file.

When trying to add a custom HttpHandler to handle .aspx requests for a website running in this configuration I get the following security exception:

Security Exception 
Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. 

Exception Details: System.Security.SecurityException: Request failed.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace:     

[SecurityException: Request failed.]
   System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) +0
   System.Reflection.Assembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase) +42
   System.Web.Compilation.CompilationUtil.GetTypeFromAssemblies(AssemblyCollection assembliesCollection, String typeName, Boolean ignoreCase) +172
   System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +291
   System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase) +52

I'm using a class derived from PageHandlerFactory, for example:

public class MyPageHandlerFactory : PageHandlerFactory
{
    public override System.Web.IHttpHandler 
    	GetHandler(System.Web.HttpContext context, 
    				string requestType, 
    				string virtualPath, 
    				string path)
    {
    	// CustomPageHandler derives from System.Web.UI.Page
    	return new CustomPageHandler();
    }
}

My web.config httpHandler configuration is as follow:

<httpHandlers>
    <add verb="*" path="*.aspx" type="MyPageHandler.MyPageHandlerFactory" />
</httpHandlers>

The documentation for PageHandlerFactory shows that PageHandlerFactory is decorated with the following attributes:

[PermissionSetAttribute(SecurityAction.LinkDemand, Unrestricted = true)]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Unrestricted = true)]
public class PageHandlerFactory : IHttpHandlerFactory

Does this mean that I need to set ASP.NET to run at Full Trust to be able to create my own PageHandlerFactory classes?

© Stack Overflow or respective owner

Related posts about ASP.NET

Related posts about httphandler