跨域引用Silverlight相关问题解疑
创始人
2024-06-19 04:20:19
0

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

示例代码

 

  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相关问题解决办法。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...