Assembly.UnsafeLoadFrom导致Web应用程序崩溃

时间:2016-08-26 21:38:33

标签: asp.net asp.net-web-api azure-storage azure-storage-blobs

我正在尝试从互联网加载DLL,更具体地说是Azure存储(Blob),所以我使用了#34; Assembly.UnsafeLoadFrom"像这样:

Assembly.UnsafeLoadFrom(@"https://accountname.blob.core.windows.net/test/calculator.dll");

但是因为这个特定的电话,我的网络应用程序(已发布)返回:

  

"指定的CGI应用程序遇到错误和服务器   终止了这个过程。"

奇怪的是,如果我使用我的本地构建,那很好。没有崩溃,返回结果是正确的。

我使用的是Visual Studio 2015和.net 5。

请让我知道如何解决此问题或如何调试它。

由于

1 个答案:

答案 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();
}

<强>结果