c# - ASP.net UserControl 和 AppDomain TypeResolve

标签 c# asp.net reflection appdomain virtualpathprovider

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

调用有控件的页面时找不到控件类型,除非我把dll放在bin文件夹下。

错误: 解析器错误 说明:解析服务此请求所需的资源期间发生错误。请查看以下具体的解析错误详细信息并适当修改您的源文件。

Parser Error Message: Could not load type 'App.Modules.ModuleA.Controls.Entity1Item'.

Source Error:

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

我尝试处理所有重要的 AppDomain 事件(AssemblyResolve、TypeResolve 和 ReflectionOnlyAssemblyResolve),但没有为我的类型调用。

我在 TypeResolve 文档中看到,只要执行 Type.GetType 并且找不到类型,就会调用它。似乎 ASCX 在需要其类型时未触发事件...为什么?

谢谢! 亚历克斯

最佳答案

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

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

然后 AssemblyResolve 事件将触发,要求您加载“YourDynamicAssemblyName”。

关于c# - ASP.net UserControl 和 AppDomain TypeResolve,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6843152/

相关文章:

asp.net - 由于超过 2083 个字符, Crystal 报表在 IE 中下载失败

asp.net - Log4net threadContext 与 IIS 中托管的 WCF 一起使用是否安全?

c# - 无法使用 smo 从 C# 执行脚本

java - Guava 事件总线 : would/should this be GWT-compatible?

java - 使用反射API获取字段名称和值

reflection - 我可以替换Linqpad使用的反射工具吗?

c# - 获取当前事件的应用程序名称

c# - 限制带宽速度

javascript - C# websocket服务器从javascript接收文本

c# - Entity Framework 数据库首先是多对多