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

È stato utile?

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top