2011-07-04 88 views
0

承載我的Silverlight應用程序服務器是在IIS和設置爲只使用HTTPS的Silverlight。跨域訪問策略不工作在IIS

Silverlight的web項目是IIS網站的根和web服務項目映射到/服務一個單獨的Web應用程序。

我可以用「」和「」

瀏覽到我的網站,但如果我使用第二個選項的網站加載不錯,但在嘗試訪問我的任何服務時,我得到一個錯誤。

錯誤,而試圖讓 到URI 'https://localhost/Services/Services/Authentication.svc' 請求時發生。 這可能是由於地方試圖以跨域方式 訪問的服務沒有正確的跨域策略 ,或者說是 不適用於SOAP服務的政策。您可能需要 聯繫 服務的所有者以發佈跨域 策略文件並確保允許發送與SOAP相關的HTTP標頭 。 此錯誤也可以通過使用 內部類型的Web服務 代理,而不使用 InternalsVisibleToAttribute屬性

我的crossdomain.xml和clientaccesspolicy.xml文件在我的Web服務應用程序,並根引起的在Silverlight Web項目的根目錄中。

的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-access-from domain="https://*" secure="true" /> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

clientaccesspolicy.xml

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
    <cross-domain-access> 
     <policy> 
    <allow-from> 
    <domain uri="https://*"/> 
    </allow-from> 
    <grant-to> 
    <resource path="/" include-subpaths="true"/> 
    </grant-to> 
</policy> 

我真的不知道是什麼問題。

感謝

編輯

下面是調用服務後,什麼小提琴手節目。 。

Fiddler Output 使用Fiddler成立解碼HTTPS IE並沒有表現出任何額外的條目,但鉻我得到以下輸出

Fiddler Output2

回答

1

由於錯誤消息說,「這可能是由於試圖在跨域方式訪問服務......」請嘗試使用在客戶端的一些工具,如Fiddler看到什麼是服務器的實際響應。這會給你更多關於這個問題的信息。

+0

我已經編輯我的職務,以顯示提琴手輸出什麼都看不到。 – Midimatt

+0

你需要明確地告訴提琴手解碼HTTPS流量(工具 - >提琴手選項 - > HTTPS),否則它不會顯示HTTPS請求。 – carlosfigueira

+0

現在我已經設置好了,我在小提琴手中獲得了1個額外的條目,它裏面沒有任何信息。 – Midimatt

0

至於服務所示提琴手參考文件中有指針爲localhost:444,當你在同一個解決方案這兩個項目,並添加服務引用這通常發生。

+0

Web服務託管在https:// Localhost:444上Silverlight應用程序託管在Https:// Localhost:443上,因此引用是正確的 – Midimatt

0

我在我的解決方案的一部分frontEnd.Web解決了這個右擊,去而不是使用自動分配端口選項屬性,然後Web選項卡,我改變了它使用本地IIS服務器。這擺脫了錯誤。