如何从 Asp.Net 核心中的特定 URL 加载 DLL 文件
How to load a DLL file from a specific URL in Asp.Net Core
我想从 http://localhost:8080/bin/ 下载 DLL 文件并在我的 Asp.Net 核心应用程序中实例化 类 和功能。
我已经制作了一个小型控制台应用程序(在 .NET Framwork 中)来执行此操作。这里的代码:
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
using (var wc = new WebClient())
{
var myDll = Assembly.Load(wc.DownloadData("http://localhost:8080/test-dll/bin/myDll.dll"));
Type t = myDll .GetType("ConsoleApplication1.Test");
// Instantiate my class
object myObject = new object();
myObject = Activator.CreateInstance(t);
}
}
}
}
很遗憾,.Net Core 不支持 WebClient。
那么,如何加载位于特定 URL 中的 dll 文件并实例化它? (在 .Net 核心中)
提前感谢您的回答!
namespace ConslApp
{
class Prog
{
static void Main(string[] args)
{
using (var web = new Web())
{
var myDll = Assembly.Load(web.DownloadData("http://localhost:8080/test-dll/bin/myDll.dll"));
Type t = myDll .GetType("ConslApp.Test");
// Instantiate my class
object Obj = new object();
obj = Activator.CreateInstance(t);
}
}
}
}
您应该可以使用以下代码在 ASP.Net 核心中下载文件。
using (HttpClient client = new HttpClient())
{
string url = "http://localhost:55272/myDll.dll";
using (var response = await client.GetAsync(url))
{
response.EnsureSuccessStatusCode();
using (var inputStream = await response.Content.ReadAsStreamAsync())
{
var mydll = AssemblyLoadContext.Default.LoadFromStream(inputStream);
}
}
}
但请记住,某些文件类型(例如 .config、.dll .exe)在 IIS 中受到保护,您将无法使用默认的 IIS settings/configuration 下载此类文件。您需要明确配置该部分。可能这个 link 在这方面会有所帮助。
我想从 http://localhost:8080/bin/ 下载 DLL 文件并在我的 Asp.Net 核心应用程序中实例化 类 和功能。
我已经制作了一个小型控制台应用程序(在 .NET Framwork 中)来执行此操作。这里的代码:
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
using (var wc = new WebClient())
{
var myDll = Assembly.Load(wc.DownloadData("http://localhost:8080/test-dll/bin/myDll.dll"));
Type t = myDll .GetType("ConsoleApplication1.Test");
// Instantiate my class
object myObject = new object();
myObject = Activator.CreateInstance(t);
}
}
}
}
很遗憾,.Net Core 不支持 WebClient。
那么,如何加载位于特定 URL 中的 dll 文件并实例化它? (在 .Net 核心中)
提前感谢您的回答!
namespace ConslApp
{
class Prog
{
static void Main(string[] args)
{
using (var web = new Web())
{
var myDll = Assembly.Load(web.DownloadData("http://localhost:8080/test-dll/bin/myDll.dll"));
Type t = myDll .GetType("ConslApp.Test");
// Instantiate my class
object Obj = new object();
obj = Activator.CreateInstance(t);
}
}
}
}
您应该可以使用以下代码在 ASP.Net 核心中下载文件。
using (HttpClient client = new HttpClient())
{
string url = "http://localhost:55272/myDll.dll";
using (var response = await client.GetAsync(url))
{
response.EnsureSuccessStatusCode();
using (var inputStream = await response.Content.ReadAsStreamAsync())
{
var mydll = AssemblyLoadContext.Default.LoadFromStream(inputStream);
}
}
}
但请记住,某些文件类型(例如 .config、.dll .exe)在 IIS 中受到保护,您将无法使用默认的 IIS settings/configuration 下载此类文件。您需要明确配置该部分。可能这个 link 在这方面会有所帮助。