2011-05-20 89 views
1

我在託管我的Silverlight應用程序的IIS Web服務器的虛擬框上運行Windows Server 2008。當我嘗試從localhost:80上的服務器(VM)瀏覽應用程序時,一切正常,並找到服務。但是,當我嘗試從網絡上的另一臺計算機上瀏覽應用程序時,可以看到主屏幕和silverlight加載了所有內容,但在調用服務時,出現異常:Silverlight 4服務

SCRIPT5022:Silverlight應用程序中的未處理錯誤操作過程中發生異常,導致結果無效。檢查異常詳情的InnerException。在System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() 在alisaWebApp.SecurityService.EncryptCompletedEventArgs.get_Result() 在alisaWebApp.LoginPage.securityClient_EncryptCompleted(對象發件人,EncryptCompletedEventArgs E) 在alisaWebApp.SecurityService.SecurityServiceClient.OnEncryptCompleted(對象狀態)

不太確定這可能意味着什麼,但我的猜測是該服務無法找到?但是不應該從Web服務器調用服務,並且當我從服務器運行應用程序時,一切都可以正常工作。也許我錯過了端口轉發的東西?任何幫助,將不勝感激。

+0

您是否檢查了內部異常的細節? Silverlight應用程序正在客戶端機器上運行,如果您在Silverlight應用程序的應用程序配置中使用對localhost的服務引用,那麼您最終還會尋找在客戶端計算機上運行的服務。這在您在Web服務器上運行應用程序時起作用,因爲Web服務器也是客戶端。 – 2011-05-20 23:28:24

+0

俄狄浦斯,這工作,但現在當我嘗試從服務器訪問該網站,它不工作:D。有沒有什麼方法可以「檢測」使用什麼參考?我的意思是服務器必須是'localhost',而客戶端的服務器的IP地址是正確的? – Ryan 2011-05-21 00:00:26

回答

0

您可能會遇到跨域異常。 SilverLight應用程序託管在本地主機時,不會強制執行與服務訪問相關的安全性。

如果這是正確的,請參閱cross domain access上的這篇文章。

2

如果您在Silverlight代碼中調用服務,則將從用戶瀏覽器中運行的Silverlight應用程序調用該服務。您需要通過http或https使用clientaccesspolicy.xml來允許特定的IP或所有IP訪問服務。

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

該文件需要位於Web應用程序的根目錄中。

除非您希望整個世界能夠使用您的服務,否則您可能還想設置一些安全性。

另一個問題可能是ClientConfig文件。如果當前設置爲本地主機(到您的服務器IP),您需要在那裏更改服務端點地址。