ドメイン全体で Silverlight XAP ファイルにアクセスするにはどうすればよいですか?
-
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>