2009-06-26 26 views
7

Sto tentando di aggiungere la mia applicazione Silverlight che vive in un sottodominio a una pagina Web in un altro sottodominio. Per qualche motivo questo semplicemente non funziona ... la mia applicazione Silverlight viene caricato come ad esempio in una pagina su http://subA.domain.com/somepage.html:Come accedere a un file XAP Silverlight su un dominio?

<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> 

Se sposto SilverlightApp.xap a subA.domain.com, si carichi perfettamente. Quali passaggi sono necessari per accedere a un file XAP su domini ?? Sto raschiando la rete cercando di capirlo e sembra non arrivare da nessuna parte.

Grazie !!

risposta

2

Quando Silverlight richiede un file .XAP tra domini, il tipo di contenuto deve essere: application/x-silverlight-app. Inoltre, è necessario un file di criteri di dominio incrociato sull'altro dominio. gl

0

È possibile creare un semplice file html accanto a .xap che contiene l'oggetto silverlight e accedervi da un iframe. Questo è il modo in cui http://silverlight.live.com/ ha risolto questo problema, ad esempio.

Nella pagina di principale subA.domain.com aggiungere un iframe che mostrano una pagina html sull'altro dominio:

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

e SilverlightApp.html su subBdomain.com potrebbe essere simile:

<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> 
5

Per aiutare altri utenti che hanno lo stesso problema e non desiderano utilizzare gli IFrame, vedere questo link, poiché ha risolto il problema. Anche se l'autore si riferisce a Silverlight 2, ha risolto il problema in Silverlight 3. Nel caso in cui il collegamento si interrompa, ci sono 2 cose che dovevo fare:

- Nell'app Silverlight, modifica l'AppManifest. xml per aggiungere il seguente:

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

- Se si sta utilizzando HtmlPage nella vostra applicazione Silverlight (come ad esempio durante la lettura del QueryString passato alla pagina di hosting), è necessario aggiungere anche:

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

all'oggetto silverlight nella pagina di hosting.

Si prega di notare che ci sono implicazioni sulla sicurezza di quanto sopra, e non posso fare a meno di pensare che questo è il motivo per cui Microsoft non si fa in quattro per diffondere queste informazioni. Tuttavia nel mio caso non ho elementi Silverlight scrivibili, e da quando ho scritto l'app silverlight, non ho alcun problema con la pagina di hosting che consente all'app Silverlight di accedervi.

Durante la ricerca di questo, ho notato che questo problema e le soluzioni corrispondenti vengono confusi con un problema separato, il problema di un silverlight xap che accede a un servizio wcf oltre i limiti del dominio. Tale problema richiede un file clientaccesspolicy.xml che si trova nella directory principale del sito Web che ospita il servizio wcf.

Quindi è possibile avere il primo sito che accede a un file xap su un secondo sito, che accede a un servizio dati su un terzo sito, per la massima flessibilità e riutilizzo.

Problemi correlati