你也可能想在ClientAccessPolicy.xml閱讀起來。這裏是SO上的good link。簡而言之,您的服務必須允許通過ClientAccessPolicy.xml文件授予Silverlight客戶端對其域的訪問權來調用其自身。這通常通過創建一個服務(可以在託管服務的同一項目中實現)來確保ClientAccessPolicy.xml文件在正確的位置可用。
如果你的服務是自託管的,可以這樣代碼添加到您的服務啓動(主):
// This service is used to retrieve the client access policy to allow for cross-domain service calls.
ServiceHost ClientAccessPolicyService = null;
ClientAccessPolicyService = new ServiceHost(typeof(ClientAccessPolicyService));
ClientAccessPolicyService.Open();
線這樣的(從我們的項目,該項目目前正處於發展的,我敢肯定是)這些設置將我們部署的時間來改善被添加到您的服務的app.config文件:
<service name="ClientAccessPolicyService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8731/"/>
</baseAddresses>
</host>
<endpoint address=""
binding="webHttpBinding"
contract="IClientAccessPolicy"
behaviorConfiguration="HttpEnableBehavior">
</endpoint>
</service>
<endpointBehaviors>
<behavior name="HttpEnableBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
哪裏ClientAccessPolicyService爲您服務,提供了ClientAccessPolicy.xml文件和IClientAccessPolicy是OperationContract的。
希望在此信息與上述鏈接(及其嵌入式鏈接)中的信息之間,您可以從Silverlight獲得您的服務。可能有更多的我離開了,但我真的開始自己與WCF和Silverlight,所以我感到幸運的東西運行!
祝你好運!
需要注意的是,SL只允許異步調用的原因是SL在UI線程上執行,非異步會阻止UI更新。您可以在SL中產生線程,但是將所有東西都作爲UI應用程序的更好模式並加以實施,避免程序員不得不用繁雜的線程管理代碼來代碼(儘管它並不那麼複雜)。 – 2011-03-24 20:02:25