2012-04-01 125 views
1

我從Silverlight應用程序調用服務並獲取crossdomainploicy錯誤。我把clientaccesspolicy.xml放在與xap.file相同的文件夾中。從Silverlight應用程序調用WCF服務時出錯?

http://msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx

一個錯誤,而試圖做出URI '://localhost/Service1.svc HTTP' 請求時發生。這可能是由於在沒有適當的跨域 策略或者不適合SOAP服務的策略的情況下,嘗試以跨域方式訪問服務 。您可能需要聯繫服務的所有者以發佈跨域 策略文件,並確保它允許發送與SOAP相關的HTTP標頭爲 。此錯誤也可能是由於使用Web 服務代理中的內部類型而不使用InternalsVisibleToAttribute屬性造成的。 請參閱內部異常的詳細信息

回答

2

clientaccesspolicy.xml應在託管服務領域的根文件夾(如http://mydomain.com/crossdomainpolicy.xml,而不是在XAP文件的目錄。

這顯然說明在你的網頁鏈接到:

放置一個clientaccesspolicy.xml文件在哪裏 服務託管配置服務,以允許跨域域的根訪問。

+0

是的,我看到了。 – marko 2012-04-01 18:36:39

0

您是使Web服務還是使用第三方Web服務?您提到http://msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx的文章僅適用於您提供網絡服務的文章。

您所遇到的是一個Site of Origin SOS錯誤。如果您嘗試使用第三方Web服務,並且他們不使用clientaccesspolicy,則可以通過創建Web服務的包裝來解決此問題。基本上,您必須創建一個Web服務,並將其作爲您的Silverlight應用程序在同一站點上進行託管。然後,您的webservice將調用第三方webservice並相應地返回值。

由於Silverlight應用程序的沙盒安全規則,它們只能與來自同一站點的Web服務進行通信,除非將ClientAccessPolicy應用於將Web服務打開以供外部Site of Origins使用。再次,如果你不是那個託管web服務的人,你可能無法控制這個。

SOS適用於主機名,端口和協議。所以http://localhost/是不同於https://localhost/http://localhost:9999/是不同於http://localhost:80/

相關問題