ASP.net VirtualPathProvider来动态加载控件



我使用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;
}

相关内容

  • 没有找到相关文章

最新更新