2011-07-28 70 views
0

我創建了一個從Silverlight應用程序調用的WCF服務庫。從Silverlight調用的WCF服務庫跨域錯誤

.svc文件(GVFileManagementService.svc)託管在同時承載xap的Web項目上。

現在,GVFileManagementService.svc只包含對dll的引用。

本地,一切工作正常。但是當我在服務器上部署解決方案時,xap無法工作,我在Fiddler中注意到應用程序正在請求crossdomain.xml和clientaccesspolicy.xml文件。

的HTTPS是:http://localhost:1186/clientaccesspolicy.xml

http://localhost:1186/crossdomain.xml

爲什麼它表示本地主機URL?我該如何解決這個問題?我應該在哪裏放置這些文件?

謝謝

回答

1

客戶端訪問和跨域策略文件需要位於根網站目錄中。 Fiddler顯示本地主機地址,因爲您正在使用特定端口上的本地Web服務器。

您可能會看看這篇文章。 http://msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx

+0

嗨,謝謝你的回覆。那麼silverlight應用程序不是在本地調用,而是通過像http://87.76.67.54:84/default.aspx這樣的url。當我請求此鏈接時,Silverlight進度顯示,但掛起以請求跨域和http:// localhost:1186/crossdomain.xml中的策略。 – user867597

+0

聽起來像您的ServiceReference.ClientConfig具有本地地址方案。你可以驗證你的web.config和ServiceReference.ClientConfig是否指定了WAN地址? – cmsjr

0

由於Silverlight的沙盒特性,爲了訪問來自不同網絡的資源,您需要擁有客戶端訪問策略,並且如果您訪問的是不同的域,那麼還需要跨域策略。

1

您的問題可能是您的開發環境中使用的本地主機服務的引用正在構建XAP文件。這就是XAP文件中的內容,以及爲什麼Silverlight客戶端在嘗試使用它時正在尋找本地主機。您需要創建一個相對綁定,以便在Silverlight客戶端開始請求服務時,它將替換部署計算機上的服務名稱。

此鏈接Using relative URLs to access WCF services in Silverlight可能有助於解釋發生了什麼以及如何去做。