2009-08-24 31 views
0

我正在學習使用WCF與後端進行通信來構建Silverlight 3應用程序。我們將在Server2008或Vista上部署到IIS7。客戶端二進制文件以及Web服務二進制文件都位於同一個IIS Web目錄中。當我點擊服務首頁(http://localhost/MyService.svc)時,它返回正常。當我打開應用程序(http://localhost/index.html)時,我得到了我的Silverlight應用程序。靜態材質呈現得很好,但是我試圖用CrossDomainError填充返回的兩個字段。根據我的理解,當您從託管在某個其他域上的頁面訪問服務時會發生這種情況。我不相信我會這樣做,除非不知情。同一域上的CrossDomainError

異常消息爲:

[CrossDomainError] 參數:http://localhost:2721/Service1.svc 調試資源字符串不可用。關鍵和論據常常提供足夠的信息來診斷問題。看到[一些可怕的網址,我不會再現這裏,因爲它無用]

我打開端口2721入站和出站無效。

有什麼想法?

回答

2

對於兩個被認爲具有相同來源的文檔,所有內容必須完全相同:協議(http/https),域和端口。

因此,如果您打開http://localhost並嘗試向http://localhost:2721發出請求,則會出現該錯誤。

+0

謝謝!後續問題在這裏:http://stackoverflow.com/questions/1325118/how-do-you-create-obtain-a-cross-domain-policy-for-an-iis7-wcf-service – 2009-08-24 22:28:19

1

您需要在網站的根目錄下有一個crossdomain.xml和/或一個clientaccesspolicy.xml(需要使用crossdoomain.xml進行兼容性兼容,這兩種方式都適用於Silverlight)。此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 path="/" include-subpaths="true" /> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 
+0

好吧,所以我已經做到這一點,但我仍然得到跨域錯誤。有什麼我應該考慮的嗎? – 2009-08-24 23:25:55

相關問題