2011-05-26 80 views
1

我使用WCF服務(不RIA)和Silverlight我收到以下錯誤:跨域策略文件錯誤

時發生錯誤,試圖使 請求URI 的「http:/ /本地主機:8732 /」。這可能是因爲嘗試以跨域方式訪問 服務,因爲沒有 適當的跨域策略, 或不適合 SOAP服務的策略。您可能需要聯繫 服務的所有者發佈 跨域策略文件,並確保 允許發送與SOAP相關的HTTP標頭 。通過使用Web 服務代理中的內部類型,而不使用 InternalsVisibleToAttribute屬性,也可能導致此錯誤 。 請參閱 的內部例外更多詳情。

我已經嘗試將以下內容添加到我的clientaccesspolicy.xml文件中,並將crossdomain.xml添加到我的Web項目的根目錄中。它們看起來像這樣...

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

的crossdomain.xml:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

任何想法,爲什麼我得到這個?

在此先感謝。

+0

您可以安裝Fiddler以查看客戶端正在發送的內容以及服務響應的內容?這應該會給我們更多關於這個問題的信息。 – carlosfigueira 2011-05-26 19:01:29

+0

我希望我能夠,但我工作的公司不允許我安裝小提琴手..關於如何解決它的任何其他想法? – Pawan 2011-05-26 19:07:05

+0

網絡監視器?或者使用Firefox或IE9等瀏覽器來查看網絡請求? – carlosfigueira 2011-05-26 21:14:47

回答

0

clientaccesspolicy.xml需要放置在承載您的WCF服務的網站的根目錄下,而不是放置在您的Web項目的根目錄下。

0

當我通過WCF服務移動到單獨的 Web應用程序時,我遇到了一個SOAP WCF服務的問題。即使在WCF Web應用程序的根目錄中有我的clientaccesspolicy.xml,我仍然收到此錯誤。對我而言,最快的解決方案是將我的WCF服務從SOAP更改爲REST,最後Silverlight識別出clientaccesspolicy.xml,並且請求再次開始工作。