ASP.net UserControl和AppDomain类型解析



我使用VirtualPathProvider来包含在编译时不可用的用户控件。除了对实际包含控件的dll的引用之外,一切正常。

当调用具有控件的页面时,它无法找到控件类型,除非我将dll放在bin文件夹中。

错误:解析器错误描述:在解析服务此请求所需的资源时发生错误。请查看以下具体的解析错误细节,并适当修改源文件。

解析器错误消息:无法加载类型"App.Modules.ModuleA.Controls.Entity1Item"。

源错误:

第一行:<%@ Control Language=" c# " AutoEventWireup="true"后台代码= " Entity1Item.ascx.cs "继承= " App.Modules.ModuleA.Controls。Entity1Item " %>

我试图处理所有重要的AppDomain事件(AssemblyResolve, typerresolve和ReflectionOnlyAssemblyResolve),但没有一个被调用为我的类型。

我在typerresolve文档中看到,当一个Type。执行GetType,但没有找到类型。似乎ASCX在需要它的类型时没有触发事件……为什么?

谢谢!亚历克斯

AssemblyResolve事件应该解决这个问题,但是您需要在类型名称中指定程序集名称,例如

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Entity1Item.ascx.cs"
    Inherits="App.Modules.ModuleA.Controls.Entity1Item, YourDynamicAssemblyName" %>

AssemblyResolve事件将触发,要求您加载'YourDynamicAssemblyName'。

哪些内容可以虚拟化?可浏览类型,如ASPX、母版页、ASCX和主题,是唯一可以虚拟化的项。要虚拟化非默认的可浏览内容,您需要映射BuildProvider类。

"当BuildProvider构建时,它会在临时ASP中构建一个新类。. NET Files文件夹。添加到文件夹中的任何类都会自动对应用程序可用。"对我来说,它看起来像是你需要映射system。web。compile。usercontrolbuildprovider来在运行时构建你的usercontrols而不是解析类型,但现在我不知道怎么做。希望对大家有用

相关内容

  • 没有找到相关文章

最新更新