ドメイン全体で Silverlight XAP ファイルにアクセスするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1051447

  •  20-08-2019
  •  | 
  •  

質問

あるサブドメインに存在する Silverlight アプリケーションを別のサブドメインの Web ページに追加しようとしています。何らかの理由で、これは単純に機能しません...私の 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 ファイルにアクセスするにはどのような手順が必要ですか??これを理解しようとしてネットを調べていますが、どこにも到達しないようです。

ありがとう!!

役に立ちましたか?

解決

Silverlight がクロスドメインで .XAP ファイルを要求する場合、コンテンツ タイプは次のようにする必要があります。 アプリケーション/x-silverlight-app. 。また、必要なものは、 クロスドメインポリシーファイル 他のドメインで。GL

他のヒント

同じ問題を抱えていて、IFrame を使用したくない他の人を支援するには、これを参照してください。 リンク, 、それは私の問題を解決したので。著者は 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">

-- Silverlight アプリで HtmlPage を使用している場合 (ホスティング ページに渡された QueryString を読み取るときなど)、以下も追加する必要があります。

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

ホスティング ページの Silverlight オブジェクトに追加します。

上記にはセキュリティ上の影響があることに注意してください。これが、Microsoft がわざわざこの情報を広めない理由であると考えざるを得ません。ただし、私の場合、スクリプト可能な Silverlight 要素はなく、Silverlight アプリを作成したので、Silverlight アプリにアクセスを許可するホスティング ページには問題ありません。

これを調査しているときに、この問題と対応する解決策が別の問題、つまりドメイン境界を越えて wcf サービスにアクセスする Silverlight XAP の問題と混同されていることに気づきました。この問題には、wcf サービスをホストする Web サイトのルートにある clientaccesspolicy.xml ファイルが必要です。

したがって、最大限の柔軟性と再利用を実現するために、最初のサイトが 2 番目のサイトの xap ファイルにアクセスし、そのサイトが 3 番目のサイトのデータ サービスにアクセスすることが可能です。

あなたは、次のSilverlightオブジェクトを含むとiframeからこのアクセスの.xapへの簡単なHTMLファイルを作成することができます。これは、どのように 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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top