代码改变世界

跨域部署Silverlight时需要注意的问题

2010-08-22 20:30  NicolasZhang  阅读(628)  评论(0编辑  收藏  举报

    当我们的Silverlight程序(.xap)发布地址和网页发布地址处于不同服务器上(跨域状态)时,由于安全机制在Silverlight和Javascript调用时会出现一些问题,如:Silverlight调用页面中的Javascript方法或页面中的Javscript调用Silverlight方法时报错或无反应,此时我们需要添加以下配置以解决此问题:

1.承载Silverlight的页面中的Object添加参数:

<param name="enableHtmlAccess" value="true"/>

以允许Silverlight访问当前页DOM;

2.Silverlight项目中Properties/AppManifest.xml增加参数,作如下修改:

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        ExternalCallersFromCrossDomain="ScriptableOnly">

    <Deployment.Parts>

    </Deployment.Parts>

</Deployment>

以允许跨域脚本访问Silverlight中注册并设置为ScriptableMember的对象或方法,

ExternalCallersFromCrossDomain的默认值为NoAccess,即不允许跨域脚本访问。