I have written a VirtualPathProvider to change how aspx pages are loaded into my ASP.Net application. As part of this process I have removed Code-Behind files and I am simply ascerting that my page inherits from a particular page class.
eg:
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Namespace.PageClass" %>
If I do this I get the following exception:
HttpParseException Could not load type
‘Namespace.PageClass’
I have also tried the following:
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Namespace.PageClass, AssemblyName" %>
This produces the following error:
HttpParseException
Could not load the assembly
‘AssemblyName’. Make sure that it is
compiled before accessing the page.
When the application starts I load the required Assembly into the current App domain:
AppDomain.Current.Load(...)
At the moment I am assuming the problem lies with the BuildManager’s ability to resolve the Namespace/Assembly reference…. but if honest… that’s a guess 🙂
Is anyone able to shed some light on this?
Your page must use the full specified class location – i.e.
Inherits="MyNamespace.MyClass, MyAssembly".Then loading the assembly into the appDomain is not going to help AppDomain resolve it. It doesn’t walk the dynamically loaded assemblies. So you must subscribe for the AppDomain.ResolveAssembly event.
And you’re done. Now the runtime knows how to resolve classes from this dynamically loaded assembly.