[英]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.