2009-06-26 29 views
7

Tôi đang cố gắng thêm ứng dụng Silverlight của mình trên một tên miền phụ vào một trang web trong tên miền phụ khác. Đối với một số lý do ... ứng dụng Silverlight của tôi chỉ đơn giản là không làm việc này được nạp như vậy trong một trang trên http://subA.domain.com/somepage.html:Tôi làm cách nào để truy cập tệp Silverlight XAP trên một tên miền?

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

Nếu tôi chuyển SilverlightApp.xap để subA.domain.com, nó tải một cách hoàn hảo. Bước nào cần thiết để truy cập tệp XAP trên các tên miền ?? Tôi đã cào lưới cố gắng tìm ra điều này và dường như chẳng đi đến đâu cả.

Cảm ơn !!

Trả lời

2

Khi Silverlight yêu cầu miền chéo tệp .XAP, loại nội dung phải là: ứng dụng/x-silverlight-app. Ngoài ra, bạn cần có một tệp chính sách tên miền chéo trên tên miền khác. gl

0

Bạn có thể tạo tệp html đơn giản bên cạnh .xap chứa đối tượng silverlight và truy cập từ khung nội tuyến. Đây là cách http://silverlight.live.com/ khắc phục sự cố này chẳng hạn.

On bạn trang chính trên subA.domain.com thêm một iframe mà hiển thị một trang html trên miền khác:

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

và SilverlightApp.html trên subBdomain.com có ​​thể giống như thế:

<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

Để hỗ trợ những người khác có cùng vấn đề này và không muốn sử dụng IFrame, vui lòng xem link này vì đã giải quyết được sự cố của tôi. Mặc dù tác giả đang đề cập đến Silverlight 2, nó đã giải quyết được vấn đề của tôi trong Silverlight 3. Trong trường hợp liên kết bị hỏng, có 2 điều tôi cần làm:

- Trong ứng dụng Silverlight, hãy chỉnh sửa AppManifest. xml để thêm những điều sau đây:

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

- Nếu bạn đang sử dụng HtmlPage trong ứng dụng Silverlight của bạn (chẳng hạn như khi đọc QueryString truyền cho các trang lưu trữ), bạn cũng phải thêm:

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

đối tượng Silverlight trong trang lưu trữ.

Xin lưu ý rằng có những tác động về bảo mật ở trên và tôi không thể không nghĩ rằng đây là lý do tại sao Microsoft không loại bỏ thông tin này. Tuy nhiên trong trường hợp của tôi, tôi không có các phần tử Silverlight có thể viết kịch bản và kể từ khi tôi viết ứng dụng Silverlight, tôi không gặp vấn đề gì với trang lưu trữ cho phép ứng dụng Silverlight truy cập vào nó.

Trong khi nghiên cứu điều này, tôi nhận thấy rằng vấn đề này và các giải pháp tương ứng bị nhầm lẫn với một vấn đề riêng biệt, vấn đề của xlight bạc ánh xạ truy cập dịch vụ wcf trên các ranh giới miền. Vấn đề đó yêu cầu tệp clientaccesspolicy.xml nằm trên thư mục gốc của trang web lưu trữ dịch vụ wcf.

Vì vậy, có thể có trang web thứ nhất truy cập tệp xap trên trang web thứ 2, truy cập dịch vụ dữ liệu trên trang web thứ 3, để linh hoạt và tái sử dụng tối đa.

Các vấn đề liên quan