2011-03-29 104 views
0

我寫了WCF服務,並且我還寫了(在同一個解決方案中)silverlight客戶端。 我試圖從Silverlight客戶端訪問WCF服務 - 我得到了跨域的異常。silverlight和wCF訪問的跨域問題

當我運行在服務器計算機上的系統來說,這只是發生(直通IIS 7.5)

我想我的本地機器 上運行同一系統(WCF服務器& Silverlight客戶端)和它的不發生了。

異常:「://本地主機:4522/HTTP的MyService」

,而試圖做出URI請求時發生錯誤。這可能是由於嘗試以跨域方式訪問服務而沒有適當的跨域策略或者不適合SOAP服務的策略。您可能需要聯繫服務的所有者以發佈跨域策略文件,並確保它允許發送與SOAP相關的HTTP頭。有關更多詳細信息,請參閱內部例外。

我看到了,我需要添加類似ICrossDomainService在網絡上 - 但我不知道我需要定義他們對我的項目

(在Silverlight項目的WCF服務器項目?)有人可以幫助我嗎?

謝謝。

回答

1

我認爲您需要在網站的根文件夾中創建客戶端訪問策略文件。

這說明如下:http://msdn.microsoft.com/en-us/library/cc645032(v=vs.95).aspx

策略文件看起來是這樣的,你需要根據你的跨域的要求來定製它。這個例子是從MSDN取得的,可能不能在沒有改變的情況下使用。

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
    <cross-domain-access> 
<!--Enables Silverlight 3 all methods functionality--> 
    <policy> 
     <allow-from http-methods="*">  
     <domain uri="*"/> 
     </allow-from>  
     <grant-to>  
     <resource path="/api" include-subpaths="true"/> 
     </grant-to>  
    </policy> 
<!--Enables Silverlight 2 clients to continue to work normally --> 
    <policy> 
     <allow-from >  
     <domain uri="*"/> 
     </allow-from>  
     <grant-to>  
     <resource path="/api" include-subpaths="true"/> 
     </grant-to>  
    </policy> 
    </cross-domain-access> 
</access-policy> 

我對模式不太熟悉,但我再次擊中MSDN。類似這樣的可能會更接近:

</cross-domain-access> 
    <policy> 
    <allow-from> 
     <domain uri="*"/> 
    </allow-from> 
    <grant-to> 
     <resource/> 
    </grant-to> 
    </policy> 
</cross-domain-access> 

請檢查MSDN以確保您不會打開安全漏洞!

+1

我添加了跨域文件,它仍然無法正常工作。 – Yanshof 2011-03-29 13:21:07