我有一个 silverlight 应用程序,我在其中使用 MEF 下载 xaps。我想在调用的标头中放置一个授权令牌,这样任何人都无法访问 xaps。像这样的东西:
catalog = new DeploymentCatalog(_uri);
catalog.AddHeader(_header);
catalog.DownloadAsync();
唯一的问题是没有 AddHeader 方法。
我有一个 silverlight 应用程序,我在其中使用 MEF 下载 xaps。我想在调用的标头中放置一个授权令牌,这样任何人都无法访问 xaps。像这样的东西:
catalog = new DeploymentCatalog(_uri);
catalog.AddHeader(_header);
catalog.DownloadAsync();
唯一的问题是没有 AddHeader 方法。
DeploymentCatalog
在引擎盖下使用WebClient
,但似乎没有以任何方式暴露它。
这里有一份源代码的副本(由于某种原因在 CodePlex 上找不到它)。URI 用于WebClient
执行异步下载。完成后,响应用于使用Package.LoadPackagedAssemblies
. 使用这些程序集执行合成。
一些相关代码:
//the download
this.WebClient.OpenReadCompleted += new OpenReadCompletedEventHandler(HandleOpenReadCompleted);
this.WebClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(HandleDownloadProgressChanged);
this.WebClient.OpenReadAsync(Uri, this);
//composition on completion of async download
var assemblies = Package.LoadPackagedAssemblies(e.Result);
this.DiscoverParts(assemblies);
您可以创建一个执行相同操作但提供 AddHeader 方法的自定义目录,或者公开WebClient
.