首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight在运行时加载dll时出错

Silverlight在运行时加载dll时出错
EN

Stack Overflow用户
提问于 2011-01-25 22:31:06
回答 4查看 736关注 0票数 0

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

代码语言:javascript
复制
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文件夹btw中-我已经检查过了!:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-25 23:17:06

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

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

票数 0
EN

Stack Overflow用户

发布于 2011-01-25 23:37:34

另一种选择是将dll压缩为zip文件,然后下载该zip文件。这样您就不需要使用服务器配置了。

如何从Zip文件下载并解压缩文件在此answer中给出。

代码本质上应该是这样的:

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2011-01-25 23:07:16

尝试对已部署的应用程序使用绝对路径,并将url + path- to -clietbin指定为path。

您可能会因为服务器计算机上的无效路径而收到错误(如果您没有更改它,并且它仍然是您本地计算机的路径)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4794658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档