动态加载ASP.net LoadAssembly

本文关键字:LoadAssembly net ASP 加载 动态 | 更新日期: 2023-09-27 18:03:26

我试图在运行时加载程序集。为此,我使用以下行:

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

file是一个FileInfo对象,所以file。FullName返回文件系统上文件的完整路径,例如:c:'mywebsite'dll 'myassembly.dll

当我尝试执行上面的行时,我得到以下错误:

无法加载文件或程序集'c:'mywebsite'dll 'myassembly.dll'或它的一个依赖项。给定的程序集名称或代码库为无效的。(Exception from HRESULT: 0x80131047)

我确信这不是一个依赖问题,我不知道什么是"无效的代码库"

请注意,如果我将程序集直接放在网站的BIN文件夹上,一切都可以正常工作,我只是无法动态加载。

动态加载ASP.net LoadAssembly

为了补充Schroedingers Cat的答案,您可能需要查看汇编。如果只有文件路径,则使用LoadFile。但是从ASP运行时可能会遇到安全问题。. NET可能需要在文件系统上配置权限,以允许您的网站访问该文件。

这是一个安全/权限问题-如果没有适当的权限(取决于用于运行的帐户),您无法从外部bin加载程序集…

您需要使用"程序集名称的长形式"而不是代码的文件路径:查看此链接

这可能与权限有关,通常asp.net网站不会访问(特别是执行访问)根目录以外的文件

该方法需要程序集名称。你需要的是组装。LoadFrom,虽然你必须小心权限,因为你从asp.net应用程序调用它。

查看这里获得更多信息:如何在c#中调用托管DLL文件?