让客户遍布全球,我们遇到了一些严重的加载延迟,最初从各个位置检索XAP。希望我们可以在云端托管已编译的XAP,根据最终用户的位置提供更紧密的下载。
我们正在使用RIA服务,但由于数据连接,与内部服务的连接等,服务端点需要保留在本地服务器上。
我们如何使用基于云的服务分发XAP,同时让它继续像目前一样运行?
编辑:由于我自己完成了这个并找到了答案,所以我已经完成了我之前完成的步骤,并且提出了更好的Q&答案。 ;一种格式,以及其他任何从第0步接近问题的人。
答案 0 :(得分:0)
在对此进行锤击之后,我找到了解决方案,使其几乎完全正常工作。
Content-Type
为application/x-silverlight-app
。我使用Azure Storage Explorer完成了这项工作。您可以通过双击打开项目的属性来设置Content-Type
,但是,甚至更好的是,您可以点击“设置”设置为“编辑内容类型”并添加.xap
为{的规则{1}}以便在您上传时自动设置。application/x-silverlight-app
。此外,如果尚未设置,则需要添加source
参数,因为对于跨域,此值默认为false。对于第1项,我完成了使用如下代码:
enablehtmlaccess
对于第4项,我的代码如下:
var u = HtmlPage.Document.DocumentUri;
Site = u.AbsoluteUri.Substring(0, u.AbsoluteUri.LastIndexOf('/'));
MyServiceUri = new Uri(Site + "/ClientBin/My-Namespace-MyService.svc", UriKind.Absolute);
最后要注意的一点是:如果使用自定义初始屏幕,那么请弄清楚如何使其工作。我不知道怎么回事。我发现如果你将<param name="source" value="<%= Request.Url.Scheme %>://mytest.blob.core.windows.net/my-container/MySilverlightApp.xap"/>
<param name="enablehtmlaccess" value="true" />
设置为splashscreensource
文件的位置,那么它就不会加载。它只显示基本的silverlight负载百分比屏幕,这至少可以正确地报告负载%。为了加载自定义启动画面,它似乎仅在包含内联时才起作用。您可以通过以下方式执行此操作:
.xaml
但是,虽然这将显示自定义初始屏幕,但如果您在初始屏幕上有任何进度报告,它将无法工作。 <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" />
引用的javascript函数永远不会触发。我找不到为什么会这样,也找不到解决方法。您只需要使用旋转动画等代替实际的%进度指示器。