2012-01-20 53 views
0

我需要一些關於WCF服務的幫助。情況是這樣的,我在.net 4.0中創建了一個網站項目,然後我添加了一個名爲AdminService.svc的支持Silverlight的WCF服務。我在這項服務中寫了幾個方法,當然,他們做了[OperationContracts]。然後,我在同一個工作區中創建了另一個Silverlight 5.0項目,並嘗試使用該服務(AdminService.svc),並在此項目中添加了它的引用(我們必須記住AdminService正在同一工作區中的另一個網站類型項目中運行) 。但是現在每次運行應用程序並嘗試調用一個簡單地返回一些數據的方法時,就會出現此錯誤!Silverlight啓用WCF服務|託管在網站類型項目| .Net 4.0 |跨域問題

錯誤,而試圖使請求URI

'://本地主機:2850/XYZServices/AdminService.svc HTTP' 發生。這可能是 ,原因是嘗試以跨域方式訪問服務,但沒有適當的跨域策略或適用於SOAP服務的不適合的策略 。您可能需要聯繫服務的所有者以 發佈跨域策略文件,並確保它允許發送與SOAP相關的HTTP標頭 。 使用Web服務代理中的內部類型而不使用 InternalsVisibleToAttribute屬性也可能導致此錯誤。有關更多詳細信息,請參閱內部例外 。

明顯的答案是添加一個crossdomain.xml和clientaccesspolicy.xml,對吧?我有他們兩個在在根級別,內容如下我的WCF的網站類型項目的地方,

clientaccesspolicy.xml

<?xml version="1.0" encoding="utf-8" ?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="*"/> 
     </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

請參閱「這可能是」錯誤消息。它並不是說這是肯定的錯誤。很可能,這是完全不同的,實際得益於無效的Web服務定義。顯示你的服務的代碼和配置。此外,如果您手動將其輸入瀏覽器,服務網址會顯示什麼內容? – Sander

+0

看看我的回答這裏http://stackoverflow.com/questions/8687492/how-to-consume-wcf-in-silverlight-app/8689291#8689291,也許它會幫助你。 – dmusial

+0

這就是答案! http:// stackoverflow。com/a/3901660/614889 我需要將Web服務項目的Web根目錄更改爲「/」,並在開發服務器上爲我工作。這意味着,在視覺工作室中,由於目前還沒有web根目錄,所以將根鍵設置爲「/」就是關鍵。 謝謝。 – KMH

回答

0

我注意到clientaccesspolicy.xml文件中的一個錯誤可能會導致此消息。

將網頁文件(博客,MSDN)的內容複製到Visual Studio的某個時候,您會看到錯誤的引號字符或隱藏/不可見的Unicode字符。

將xml文件的內容複製到記事本中並粘貼回Visual Studio中,多次爲我解決了這個問題。

您還可以使用Visual Studio中的Silverlight Client Access Policy File Extension(工具|擴展管理器)

+0

感謝Erno的回覆,我在問題的評論中發佈了上面的答案,我首先嚐試重新檢查我的策略文件,他們發現了。不管怎麼說,還是要謝謝你 ! – KMH

相關問題