【问题标题】:Silverlight Error Loading dll at RuntimeSilverlight 错误在运行时加载 dll
【发布时间】:2012-10-27 08:44:14
【问题描述】:

我有一个 silverlight 应用程序,它在运行时通过相对 Uri 加载位于 ClientBin 文件夹中的 dll 文件。它在我的本地机器上运行良好,但在这里部署在服务器上时,它似乎在尝试加载文件时不断失败:

private void OnAssemblyOpened(object sender, OpenReadCompletedEventArgs e)
{  
    AssemblyPart asmbPart = new AssemblyPart();

    MessageBox.Show(e.ToString());
    Assembly asmb = asmbPart.Load(e.Result) // this line causes the exception
    ...
}

当然 silverlight 不会给我一个有用的错误 - 只是通常的 NotFound 废话。在部署它时我错过了一个步骤吗?权限什么的?顺便说一句,dll 文件肯定在 ClientBin 文件夹中 - 我已经检查过了! :)

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    另一种选择是将 dll 压缩成 zip 文件,然后下载 zip 文件。这样你就不需要玩服务器配置了。

    answer 中提供了如何从 Zip 文件下载和解压缩文件。

    代码本质上是这样的:-

    AssemblyPart asmbPart = new AssemblyPart();
    
    var zipRes = new StreamResourceInfo(args.Result, null)
    var assemRes = Application.GetResourceStream(zipRes, new Uri("YourAssembly.dll", UriKind.Relative));
    
    Assembly asmb = asmbPart.Load(assemRes.Stream)
    

    【讨论】:

    • 我没有测试过这个,但是对于那些没有权限访问 IIS 的人来说,这似乎是一个不错的解决方案
    【解决方案2】:

    尝试对已部署的应用程序使用绝对路径,并将您的 url + path-to-clietbin 作为路径。
    您可能会因为服务器机器上的路径无效而出错(如果您没有更改它并且它仍然是您本地机器的路径)。

    【讨论】:

      【解决方案3】:

      问题是我正在运行 IIS6,如果不将站点上的执行权限切换为“无”(这显然会阻止 Silverlight 应用程序运行),就无法提供 dll,所以我合法地得到了 404 - 没想到! !

      我在站点的顶层为我的脚本创建了一个虚拟目录,并将 dll 插入其中,将虚拟的执行权限切换为 None,将 uri 更新为 ../scripts/ControlLibraries.dll 和作业祝你好运!

      【讨论】:

        【解决方案4】:

        实际上,只需将应用程序的执行权限更改为仅脚本,而不是脚本和可执行文件,就可以正常工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-24
          • 1970-01-01
          相关资源
          最近更新 更多