我想加我的Silverlight应用程序上一个子域住到网页中的另一个子域。出于某种原因,这只是普通的不能正常工作......我的Silverlight应用程序加载这样在页面上 HTTP ://subA.domain.com/somepage.html

<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
        width="800px" height="600px">
        <param name="source" value="http://subB.domain.com/SilverlightApp.xap" />
        <param name="onerror" value="onSilverlightError" />
        <param name="background" value="white" />
        <param name="minRuntimeVersion" value="2.0.31005.0" />
        <param name="autoUpgrade" value="true" />
        <param name="enableHtmlAccess" value="true" />
        <a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
            <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight"
                style="border-style: none" />
        </a>
    </object>
    <iframe style='visibility: hidden; height: 0; width: 0; border: 0px'></iframe>
</div>

如果我移动SilverlightApp.xap到subA.domain.com,它完美地装入。哪些步骤都需要访问跨域XAP文件?我一直在刮净试图弄清楚了这一点,似乎毫无进展。

谢谢!

有帮助吗?

解决方案

当的Silverlight请求.XAP文件跨域,内容类型必须是:<强>应用程序/ x-Silverlight的应用。另外,你需要一个跨域策略文件上的其他域。 GL

其他提示

要帮助其他人谁都有同样的问题,而不想使用iframe,请参阅本的链接,因为它解决了我的问题。尽管笔者指的是Silverlight 2中,它已经解决了我的问题在Silverlight 3中的情况下链接中断,有两件事情我需要做的:

- 在Silverlight应用程序,编辑AppManifest.xml添加以下:

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ExternalCallersFromCrossDomain="ScriptableOnly">

- 如果你在你的Silverlight应用程序中使用HtmlPage(如当读取查询字符串传递给托管页),还必须添加:

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

要在主机页Silverlight对象。

请注意有安全隐患的上方,我不禁想,这就是为什么微软不出去自己的方式来传播这一信息。然而,在我来说,我没有编写脚本的Silverlight的元素,因为我写的Silverlight应用程序,我没有与托管页面,允许它的Silverlight应用程序访问的问题。

在研究这个,我注意到这个问题,并相应的解决方案被用一个单独的问题,一个Silverlight XAP访问跨域边界WCF服务的问题感到困惑。这个问题确实需要位于托管WCF服务的网站的根目录中的文件clientaccesspolicy.xml

因此,有可能以具有第一站点访问上的第二位点,其访问数据服务上的第三位点,获得最大的灵活性和再利用一个XAP文件。

您可以旁边包含Silverlight对象的.xap文件创建一个简单的HTML文件,然后从一个iframe访问此。这是 http://silverlight.live.com/ 如何固定这个问题例如

在你subA.domain.com主页添加的iframe,显示在其他域中的html页面:

<iframe src="http://subB.domain.com/SilverlightApp.html" 
        scrolling="no" 
        frameborder="0" 
        style="width:800px;height:600px">
</iframe>

和SilverlightApp.html上subBdomain.com可能看起来是这样的:

<html>
  <body>
    <div id="silverlightControlHost">    
      <object data="data:application/x-silverlight-2," 
              type="application/x-silverlight-2"        
              width="800px" height="600px">        
        <param name="source" value="http://subB.domain.com/SilverlightApp.xap" />
        <param name="onerror" value="onSilverlightError" />
        <param name="background" value="white" />
        <param name="minRuntimeVersion" value="2.0.31005.0" />
        <param name="autoUpgrade" value="true" />
        <param name="enableHtmlAccess" value="true" />
        <a href="http://go.microsoft.com/fwlink/?LinkID=124807" 
           style="text-decoration: none;">            
          <img src="http://go.microsoft.com/fwlink/?LinkId=108181" 
               alt="Get Microsoft Silverlight"
               style="border-style: none" />
        </a>
      </object>
      <iframe style='visibility: hidden; height: 0; width: 0; border: 0px'>
      </iframe>
    </div>
  </body>
</html>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top