2013-05-06 28 views
1

我有Silverlight4應用程序,使一個其他網絡服務器的跨域請求,作爲論壇stackoverflow帖子和MSDN,silverlight有制約跨域請求的限制。但是我發現,在silverligh4和更高版本中,您可以通過clientaccesspolicy.xml添加一個異常來發出這些請求。我添加下面的XML作爲我clientaccesspolicy.xml來自silverligh4應用程序的跨域web請求拋出安全異常

<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="*"/> 
     </allow-from> 
     <grant-to> 
     <resource path="/" include-subpaths="true"/> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 

XML文件,停留在我的應用程序的根。但在以下行我仍然拋出的安全異常

HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult); 

任何一個可以提供一些線索我可能是在這裏失去了。我知道有可能在應用程序中託管另一個本地服務,並通過它提出請求。但我不想去那個解決方案。

回答

1

我猜SL沒有閱讀XML的原因。

我建議您啓動Fiddler並檢查Silverlight提出的請求及其響應。它應該在從不同域訪問數據時查找XML文件。如果它得到404(或其他錯誤),它會引發安全異常。

另外...只是爲了確保...你在開始時並沒有忘記<?xml version="1.0" encoding="utf-8"?>,我希望?而且您還記得XML文件必須位於Silverlight應用程序將訪問的服務器上,而不是託管Silverlight應用程序的服務器,對嗎? ;)

+0

我已經添加了<?xml version =「1.0」encoding =「utf-8」?>我正在訪問的服務是託管在tomcat上的REST Java服務。我實際上在我的應用程序中添加了xml文件,該應用程序託管Silverlight但想知道如何tomcat將讀取XML文件?無論如何,我沒有把這個XML文件放入tomcat服務器的權限。其他解決方案? – kuhajeyan 2013-05-06 17:56:14

+1

除了創建本地代理服務?不。基本上,就是這樣的:只要Silverlight能夠在XAML中定義(比較簡單的東西,就是這樣)以及任何本地資源,就可以訪問靜態的在線資源。但是除此之外的任何東西都需要來自TARGET服務器的權限(這就是'clientaccesspolicy.xml'文件的用途)。 – Shaamaan 2013-05-06 21:28:32

+0

謝謝。可能是我創建本地代理的最佳方式。 – kuhajeyan 2013-05-07 06:57:47

相關問題