我正在尝试从互联网加载DLL,更具体地说是Azure存储(Blob),所以我使用了#34; Assembly.UnsafeLoadFrom"像这样:
Assembly.UnsafeLoadFrom(@"https://accountname.blob.core.windows.net/test/calculator.dll");
但是因为这个特定的电话,我的网络应用程序(已发布)返回:
"指定的CGI应用程序遇到错误和服务器 终止了这个过程。"
奇怪的是,如果我使用我的本地构建,那很好。没有崩溃,返回结果是正确的。
我使用的是Visual Studio 2015和.net 5。
请让我知道如何解决此问题或如何调试它。
由于
答案 0 :(得分:0)
简单来说,您可以通过以下代码实现目标:
<强> calculator.dll 强>
public class Calculator
{
public string HelloWorld(string userName)
{
return string.Format("Hello world, {0}!", userName);
}
}
<强> HomeController.cs 强>
public async Task<ActionResult> Index()
{
string url = "https://brucechen.blob.core.windows.net/dll/calculator.dll";
HttpClient client = new HttpClient();
var bytes = await client.GetByteArrayAsync(url);
//load assembly from bytes
Assembly assembly = Assembly.Load(bytes);
var calc = assembly.CreateInstance("calculator.Calculator");
//invoke the method and get result
var result = calc.GetType().InvokeMember("HelloWorld", BindingFlags.InvokeMethod, null, calc, new[] { "Bruce" });
ViewData["result"] = result;
return View();
}
<强>结果强>