繁体   English   中英

ASP.net VirtualPathProvider动态加载控件

[英]ASP.net VirtualPathProvider to dynamically load controls

我正在使用VirtualPathProvider加载在编译时不存在的控件(ascx)。 因此,当请求某个路径结构时,VirtualPathProvider会将路径重写为ascx,并加载包含该控件代码的dll。

一切正常,除了dll加载。 我可以加载程序集,但是站点找不到它。 如果我将其放在bin文件夹中,一切正常。

要加载我正在使用的程序集:

System.Reflection.Assembly.LoadFrom(file.FullName);

如何加载此程序集,以便在页面上呈现ascx时可以使用它?

同样,我可以将dll放置在网站的bin文件夹中,但是由于这是动态内容,因此我希望将其全部保持隔离状态。

所以你打电话

System.Reflection.Assembly.LoadFrom(file.FullName);

但是这样做不会引发异常,但是在渲染ascx文件时仍然找不到您的程序集? 您确定您的ascx文件引用了标准程序集名称吗?

您可能需要处理AssemblyResolve事件:

AppDomain.CurrentDomain.AssemblyResolve += OnCurrentDomainAssemblyResolve

private static Assembly OnCurrentDomainAssemblyResolve(object sender, ResolveEventArgs args)
{
    if (args.Name == "myDynamicAssemblyName") return _myPreviouslyLoadedDynamicAssemblyObtainedFromAssemblyLoadFrom;

    return null;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM