Come si accede a un file XAP Silverlight in un dominio?
-
20-08-2019 - |
Domanda
Sto cercando di aggiungere la mia applicazione Silverlight che risiede su un sottodominio a una pagina Web in un altro sottodominio. Per qualche ragione questo non funziona, la mia applicazione Silverlight viene caricata come tale in una pagina su 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>
Se sposto SilverlightApp.xap su subA.domain.com, si carica perfettamente. Quali passaggi sono necessari per accedere a un file XAP tra domini ?? Ho raschiato la rete cercando di capirlo e sembra che non vada da nessuna parte.
Grazie !!
Soluzione
Quando Silverlight richiede un dominio .XAP tra domini, il tipo di contenuto deve essere: application / x-silverlight-app . Inoltre, è necessario un file delle politiche tra domini sull'altro dominio. gl
Altri suggerimenti
Per aiutare gli altri che hanno lo stesso problema e non vogliono usare IFrame, vedere link , poiché ha risolto il mio problema. Anche se l'autore si riferisce a Silverlight 2, ha risolto il mio problema in Silverlight 3. Nel caso in cui il collegamento si interrompa, ci sono 2 cose che dovevo fare:
: nell'app Silverlight, modifica AppManifest.xml per aggiungere quanto segue:
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ExternalCallersFromCrossDomain="ScriptableOnly">
- Se stai usando HtmlPage nella tua app Silverlight (come quando leggi la QueryString passata alla pagina di hosting), devi anche aggiungere:
<param name="enableHtmlAccess" value="true" />
all'oggetto silverlight nella pagina di hosting.
Nota: ci sono implicazioni di sicurezza su quanto sopra e non posso fare a meno di pensare che questo è il motivo per cui Microsoft non fa di tutto per diffondere queste informazioni. Tuttavia, nel mio caso non ho elementi Silverlight scrivibili e da quando ho scritto l'app Silverlight non ho problemi 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 confuse con un problema separato, il problema di un xap silverlight che accede a un servizio wcf oltre i confini del dominio. Tale problema richiede un file clientaccesspolicy.xml situato nella radice del sito Web che ospita il servizio wcf.
Quindi è possibile avere il 1 ° sito accedendo a un file xap su un 2 ° sito, che accede a un servizio dati su un 3 ° sito, per la massima flessibilità e riutilizzo.
È possibile creare un semplice file html accanto al file .xap che contiene l'oggetto silverlight e accedervi da un iframe. Questo è il modo in cui http://silverlight.live.com/ risolto questo problema, ad esempio.
Nella tua pagina principale su subA.domain.com aggiungi un iframe che mostri 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 potrebbero assomigliare a:
<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>