2009-06-26 3 views
7

Ich versuche, meine Silverlight-Anwendung, die auf einer Sub-Domain lebt, zu einer Webseite in einer anderen Sub-Domain hinzuzufügen. Aus irgendeinem Grund dies nur ist schlicht nicht funktioniert ... meine Silverlight-Anwendung wird als solche in einer Seite auf http://subA.domain.com/somepage.html geladen:Wie greife ich auf eine Silverlight XAP-Datei über eine Domain zu?

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

Wenn ich SilverlightApp.xap zu subA.domain.com bewegen, lädt es perfekt. Welche Schritte sind erforderlich, um auf eine XAP-Datei über Domänen hinweg zugreifen zu können? Ich kratze im Netz und versuche, das herauszufinden, und es scheint, als würde ich nichts erreichen.

Danke !!

Antwort

2

Wenn Silverlight eine domänenübergreifende .XAP-Datei anfordert, muss der Inhaltstyp wie folgt lauten: application/x-silverlight-app. Außerdem benötigen Sie eine domänenübergreifende Richtliniendatei auf der anderen Domäne. gl

0

Sie könnten eine einfache HTML-Datei neben der .xap-Datei erstellen, die das silverlight-Objekt enthält, und über ein iframe darauf zugreifen. Dies ist, wie http://silverlight.live.com/ dieses Problem zum Beispiel behoben.

Auf Sie Haupt-Seite auf subA.domain.com ein iframe hinzufügen, die eine HTML-Seite auf der anderen Domäne zeigen:

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

und SilverlightApp.html auf subBdomain.com etwas aussehen könnte:

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

Um anderen zu helfen, die das gleiche Problem haben, und nicht IFrames verwenden möchten, finden Sie in diesem link, wie es mein Problem gelöst hat. Obwohl der Autor bezieht sich auf Silverlight 2, hat es mein Problem in Silverlight 3 behoben. Wenn der Link ausfällt, gibt es 2 Dinge, die ich tun musste:

- Bearbeiten Sie in der Silverlight App das AppManifest. xml hinzuzufügen, um den folgenden:

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

- Wenn Sie Htmlpage in Ihrer Silverlight-Anwendung verwenden (wie zum Beispiel beim Lesen der Abfrage-Zeichenfolge an der Hosting-Seite übergeben), müssen Sie auch hinzufügen:

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

zum Silverlight-Objekt auf der Hosting-Seite.

Bitte beachten Sie, dass es Sicherheitsbedenken im Zusammenhang mit dem oben genannten gibt, und ich kann nicht helfen, zu denken, dass dies der Grund ist, warum Microsoft nicht alles tut, um diese Informationen zu verbreiten. In meinem Fall habe ich jedoch keine skriptfähigen Silverlight-Elemente, und seit ich die Silverlight-App geschrieben habe, habe ich kein Problem mit der Hosting-Seite, die der Silverlight-App den Zugriff darauf erlaubt.

Bei der Untersuchung dieser, habe ich festgestellt, dass dieses Problem und entsprechende Lösungen mit einem separaten Problem, das Problem einer Silverlight XAP Zugriff auf einen WCF-Dienst über Domain-Grenzen verwirrt wird. Für dieses Problem ist eine clientaccesspolicy.xml-Datei erforderlich, die sich im Stammverzeichnis der Website befindet, die den Dienst "wcf" hostet.

So ist es möglich, dass die erste Site auf eine xap-Datei auf einer zweiten Site zugreift, die auf einen Datendienst auf einer dritten Site zugreift, für maximale Flexibilität und Wiederverwendung.

Verwandte Themen