跨域引用Silverlight相关问题解疑

Silverlight开发工具的应用领域比较广发。不过即使是这样一款功能强大的工具,在使用的时候同样也会造成一些问题的产生。比如跨域引用Silverlight时,就会出现一些令人头疼的问题。跨域引用Silverlight,即将Silverlight包部署在A域下,却由在B域下的网站引用。其中Silverlight通过HTML.Window调用了脚本方法。#t#

我们提供的服务有:成都网站设计、成都做网站、外贸网站建设、微信公众号开发、网站优化、网站认证、且末ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的且末网站制作公司

示例代码

  1. public partial class Page : 
    UserControl  
  2. {  
  3. public Page()  
  4. {  
  5. InitializeComponent();  
  6. }  
  7. private void Button_Click
    (object sender, RoutedEventArgs e)  
  8. {  
  9. HtmlPage.Window.Alert("hi");  
  10. }  

跨域引用Silverlight异常描述

进入B域页面,没有看到Silverlight展现,右键点击相应区域,显示“Silvelight”,说明Silverlight区域已经被渲染出来。通过HTTP Watch查看,发现Xap包已经被请求并下载下来,但就是没有展现。

Silverlight正常显示,但点击按钮后,并不弹出对话框。调试发现,在HtmlPage.Window.Alert("hi");抛出异常,异常信息为“已禁用DOM/脚本桥”。

跨域引用Silverlight问题解决

加载却不展示,是由于在A网站下没有给Silverlight配置正确的MIME类型。当引用不同域下的Silverlight包,Silverlight Runtime会检测XAP的HTTP头中的MIME类型。正确的类型是“application/x-silverlight-app”,如果配为“application/x-silverlight-2”(这似乎是旧版本的MIME配置),同样不能正常显示。IIS7由于默认带有Xap的MIME类型配置,所以不会出现此类问题。

不能正常弹出Alert对话框,但如果改成MessageBox.Show("Click");却可以正常运行。这是因为需要配置Silverlight以及Host Silverlight的页面的几个参数,使得Silverlight中的ManagedCode和页面中的Javascript和DOM code可以交互。而在同域下,这几个参数或者是默认配置好的,或者就是干脆无效,所以不需要配置。具体可参考(Security Settings in HTML Bridge),具体到这里的情况,就是要在页面中配置enableHtmlAccess属性,使在Silverlight的Manage code里可以操纵外部Dom对象。

Asp.net页面:

 
 
 
  1. < asp:Silverlight ID="Xaml1" HtmlAccess="Enabled" 
    runat="server"Source=http://localhost:2300/
    ClientBin/SilverlightApplication.xap 
    MinimumVersion="2.0.31005.0" Width="100%" 
    Height="100%" />HTML页面: 
  2. < object data="data:application/x-silverlight-2," 
    type="application/x-silverlight-2" 
    width="80%" height="80%" > 
  3. < param name="enableHtmlAccess" value="true" /> 
  4. < param name="source" value="http://
    localhost:2300/ClientBin/Silverlight
    Application.xap"/> 
  5. < param name="onerror" value="onSilverlightError" /> 
  6. < param name="background" value="white" /> 
  7. < param name="minRuntimeVersion" 
    value="2.0.31005.0" /> 
  8. < param name="autoUpgrade" value="true" /> 
  9. < a href="http://go.microsoft.com/
    fwlink/?LinkID=124807" style="text-
    decoration: none;"> 
  10. < img src="http://go.microsoft.com/
    fwlink/?LinkId=108181" alt="Get Microsoft 
    Silverlight" style="border-style: none"/> 
  11. < /a> 
  12. < /object> 

以上就是我们为大家带来的跨域引用Silverlight相关问题解决办法。

文章名称:跨域引用Silverlight相关问题解疑
标题路径:http://www.shufengxianlan.com/qtweb/news4/405904.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联