Pergunta

Eu estou tentando adicionar meu aplicativo Silverlight que as vidas em um subdomínio para uma página web em outro subdomínio. Por alguma razão isso simplesmente não está funcionando ... minha aplicação Silverlight é carregado como tal em uma página na 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 eu mover SilverlightApp.xap para subA.domain.com, ele carrega perfeitamente. Que passos são necessários para acessar um arquivo XAP em vários domínios ?? Eu fui raspando a net tentando descobrir isso e parecem estar chegando a lugar nenhum.

Graças !!

Foi útil?

Solução

Quando Silverlight solicita um cross-domain arquivo .xap, o tipo de conteúdo deve ser: application / x-silverlight app . Além disso, você precisa de um arquivo de cross-domain política no outro domínio. gl

Outras dicas

Para ajudar outras pessoas que têm esse mesmo problema, e não quer usar IFrames, consulte este link , como tem resolvido o meu problema. Mesmo que o autor está se referindo ao Silverlight 2, que resolveu o meu problema no Silverlight 3. No caso da ligação cair, existem 2 coisas que eu precisava fazer:

- No aplicativo Silverlight, editar o AppManifest.xml para adicionar o seguinte:

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

- Se você estiver usando HtmlPage em seu aplicativo Silverlight (como quando lendo o QueryString passado para a página de hospedagem), você também deve adicionar:

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

para o objeto silverlight na página de hospedagem.

Observe que há implicações de segurança ao acima, e eu não posso ajudar, mas pensar que é por isso que a Microsoft não saem de sua maneira de divulgar esta informação. No entanto, no meu caso eu não tenho elementos Silverlight scripts, e desde que eu escrevi o aplicativo Silverlight, eu não tenho um problema com a página de hospedagem, permitindo o acesso aplicativo Silverlight a ele.

Enquanto a investigar este, notei que esta questão e soluções correspondentes se confunde com um problema separado, o problema de um XAP Silverlight aceder a um serviço WCF através de limites de domínio. Essa questão exige um arquivo clientaccesspolicy localizado na raiz do site que hospeda o serviço WCF.

Por isso, é possível ter o site 1º acessar um arquivo XAP em um segundo local, que acessa um serviço de dados em uma terceira site, por flexibilidade e máxima reutilização.

Você pode criar um arquivo html simples ao lado do .xap que contém o objeto silverlight e acesso este a partir de um iframe. Isto é como http://silverlight.live.com/ fixo essa questão, por exemplo.

Por que você página em subA.domain.com adicionar um iframe que mostrar uma página html no outro domínio:

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

e SilverlightApp.html em subBdomain.com poderia ser algo como:

<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top