我可以从Azure Blob或CDN托管Silverlight XAP文件吗?
由于客户遍布全球,我们在最初从不同位置检索XAP时遇到了一些严重的加载延迟。我们希望能够在云中托管已编译的XAP,根据最终用户的位置提供更近距离的下载 我们正在使用RIA服务,但由于数据连接、与内部服务的连接等原因,服务端点需要保留在本地服务器上 我们如何使用基于云的服务分发XAP,同时让它继续保持与当前相同的功能我可以从Azure Blob或CDN托管Silverlight XAP文件吗?,silverlight,silverlight-5.0,cdn,azure-storage-blobs,Silverlight,Silverlight 5.0,Cdn,Azure Storage Blobs,由于客户遍布全球,我们在最初从不同位置检索XAP时遇到了一些严重的加载延迟。我们希望能够在云中托管已编译的XAP,根据最终用户的位置提供更近距离的下载 我们正在使用RIA服务,但由于数据连接、与内部服务的连接等原因,服务端点需要保留在本地服务器上 我们如何使用基于云的服务分发XAP,同时让它继续保持与当前相同的功能 编辑:由于我自己解决了这个问题并找到了答案,我将以前完成的步骤从我的问题转移到了答案中,以更好地促进良好的问答格式,并为从第0步开始解决问题的任何人提供。在反复思考之后,我找到了让它
编辑:由于我自己解决了这个问题并找到了答案,我将以前完成的步骤从我的问题转移到了答案中,以更好地促进良好的问答格式,并为从第0步开始解决问题的任何人提供。在反复思考之后,我找到了让它几乎完全工作的解决方案
应用程序/x-silverlight-app
的内容类型。我是用电脑完成的。您可以通过双击打开项目的属性来设置内容类型
,但更好的是,您可以单击设置工具“编辑内容类型”,并添加.xap
为应用程序/x-silverlight-app
的规则,以便在上传时自动设置
源代码。此外,如果尚未设置,则需要添加enablehtmlaccess
参数,因为对于跨域,此值默认为false
对于第#1项,我使用如下代码完成:
var u = HtmlPage.Document.DocumentUri;
Site = u.AbsoluteUri.Substring(0, u.AbsoluteUri.LastIndexOf('/'));
MyServiceUri = new Uri(Site + "/ClientBin/My-Namespace-MyService.svc", UriKind.Absolute);
对于第4项,我的代码如下所示:
<param name="source" value="<%= Request.Url.Scheme %>://mytest.blob.core.windows.net/my-container/MySilverlightApp.xap"/>
<param name="enablehtmlaccess" value="true" />
但是,虽然这将显示自定义启动屏幕,但如果启动屏幕上有任何进度报告,则它将不起作用。onsourcedownloadprogresschanged引用的javascript函数永远不会启动。我找不到为什么会这样,也找不到解决办法。你只需要有一个旋转的动画或类似的东西来代替实际的%进度指示器。没有跨域安全策略,你能做到这一点吗?@Steve我似乎做不到。我注释掉了普通表单的开头代码,将其替换为根的TextBlock。仍然有一个调用RIA服务来获取用户prefs,并且有一个调用抱怨没有权限,尽管我尽可能地包含了一个松散的跨域策略(现在再次运行localhost)。
<script id="xamlSplash" type="text/xaml">
<%= System.IO.File.ReadAllText(Context.Server.MapPath("~/Loading.xaml")) %>
</script>
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="splashscreensource" value="#xamlSplash" />