BuildManager分析页面继承我写了一个VirtualPathProvider来改变aspx页面加载到ASP.Net应用程序中的方式。作为这个过程的一部分,我删除了代码隐藏文件,我只是确保我的页面继承自特定的页面类。例如:如果我这样做,我会收到以下异常:HttpParseException无法加载类型“Namespace.PageClass”我还尝试了以下操作:这会产生以下错误:HttpParseException无法加载程序集“AssemblyName”。确保在访问页面之前编译该页面。当应用程序启动时,我将所需的程序集加载到当前的应用程序域中:AppDomain.Current.Load(...)目前我假设问题出在BuildManager能够解析名称空间/程序集引用....但是如果说实话......这是一个猜测:-)任何人都可以对此有所了解吗?您的页面必须使用完整的指定类位置-即Inherits="MyNamespace.MyClass,MyAssembly"。然后将程序集加载到appDomain中不会帮助AppDomain解析它。它不会移动动态加载的程序集。因此,您必须订阅AppDomain.ResolveAssembly事件。私有程序集myDynamicAssembly=null;protectedvoidApplication_Start(objectsender,EventArgse){myDynamicAssembly=Assembly.LoadFrom(Server.MapPath("MyLocation/MyAssembly.dll"));AppDomain.CurrentDomain.AssemblyResolve+=newResolveEventHandler(CurrentDomain_AssemblyResolve);}AssemblyCurrentDomain_AssemblyResolve(objectsender,ResolveEventArgsargs){if(args.Name=="MyAssembly"){returnmyDynamicAssembly;}返回空值;你就完成了。现在运行时知道如何从这个动态加载的程序集中解析类。可能的原因:如果您在.aspx页面或Global.asax页面中引用模块背后的任何代码并且尚未构建Web应用程序,则可能会发生此错误。只需再次构建应用程序并确保Namespace.PageClass类型在其中一个Web应用程序程序集中可用。在编译时使用@Assembly指令将程序集链接到aspx页面。@AssemblyName="assemblyname"Src="pathname"使所有程序集的类和接口都可用。2.此类错误的另一个原因可能是IIS中配置的ASP.NET版本错误。在IIS中选择正确的ASP.NET版本转到“开始”菜单,单击“运行”(或使用Win键+R)键入INetMgr并按Enter以打开InternetInformationServices应用程序展开显示本地计算机节点名称的树,然后导航到“网站”->“默认网站”右键单击??“默认网站”节点并选择弹出菜单选项“属性”5.导航到属性页中的ASP.NET选项卡并设置正确/最新版本。以上是C#学习教程:BuildManager解析页面继承上的所有共享内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
