Как получить доступ к файлу Silverlight XAP через домен? - PullRequest
7 голосов
/ 27 июня 2009

Я пытаюсь добавить свое приложение 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 через домены ?? Я разбираюсь в сети, пытаясь понять это, и, похоже, ничего не получится.

Спасибо !!

Ответы [ 3 ]

5 голосов
/ 26 декабря 2009

Чтобы помочь другим, у кого есть такая же проблема и которые не хотят использовать IFrames, просмотрите эту ссылку , так как это решило мою проблему. Несмотря на то, что автор ссылается на Silverlight 2, он решил мою проблему в Silverlight 3. Если ссылка не работает, мне нужно сделать 2 вещи:

- В приложении Silverlight отредактируйте файл AppManifest.xml, добавив следующее:

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

- Если вы используете HtmlPage в своем приложении Silverlight (например, при чтении строки QueryString, переданной на страницу хостинга), вы также должны добавить:

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

к объекту silverlight на странице хостинга.

Обращаем ваше внимание на то, что вышесказанное имеет последствия для безопасности, и я не могу не думать о том, что именно поэтому Microsoft старается изо всех сил распространять эту информацию. Однако в моем случае у меня нет доступных для сценария элементов silverlight, и поскольку я написал приложение silverlight, у меня нет проблем со страницей хостинга, позволяющей приложению silverlight доступ к ней.

Исследуя это, я заметил, что эта проблема и соответствующие решения путаются с отдельной проблемой - проблемой доступа xap silverlight к сервису wcf через границы домена. Эта проблема требует файла clientaccesspolicy.xml, расположенного в корне веб-сайта, на котором размещена служба wcf.

Таким образом, 1-й сайт может получить доступ к файлу xap на 2-м сайте, который обращается к службе данных на 3-м сайте, для максимальной гибкости и повторного использования.

2 голосов
/ 27 июня 2009

Когда Silverlight запрашивает междоменный файл .XAP, тип контента должен быть: application / x-silverlight-app . Кроме того, вам необходим файл междоменной политики в другом домене. ГЛ

0 голосов
/ 27 июня 2009

Вы можете создать простой html-файл рядом с .xap, который содержит объект silverlight, и получить к нему доступ из iframe. Вот как http://silverlight.live.com/ исправил эту проблему, например.

На главной странице сайта subA.domain.com добавьте фрейм, который показывает 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...