我有一个silverlight应用程序,我使用MEF下载xaps。我想在呼叫的标题中放置一个授权令牌,这样任何人都无法访问xaps。像这样:
catalog = new DeploymentCatalog(_uri);
catalog.AddHeader(_header);
catalog.DownloadAsync();
唯一的问题是没有AddHeader方法。
答案 0 :(得分:1)
DeploymentCatalog
使用了WebClient
,但似乎没有以任何方式公开它。
源here的副本(由于某种原因无法在CodePlex上找到它)。 WebClient
使用URI执行异步下载。完成后,响应用于使用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
或其他任何内容。