Oui, vous avez besoin d'un clientaccesspolicy.xml lorsque vous souhaitez que Silverlight communique avec une source externe.
Vous n'avez pas spécifié si le service WCF est hébergé en tant que service, auto-hébergé ou hébergé dans IIS. Si c'est dans IIS, le fichier est placé à la racine du dossier partagé (site Web).
Si le service est auto-hébergé, alors vous pouvez lire ceci article.
Pour un service Windows, vous pouvez vous référer à ce qui suit article
Mais si vous obtenez seulement l'erreur de temps en temps, alors il est probablement pas votre plus gros problème. En regardant le fait que vous dites que les erreurs se produisent lorsque vous essayez d'envoyer de gros paramètres, cela signifie que vous devrez regarder les liaisons du service WCF et le client. Ces limites sont normalement quelque chose comme 16kb par appel. Cela peut être fait du côté du service, en créant une liaison qui permettra de transmettre de grandes quantités de données.
<basicHttpBinding>
<binding name="NewBinding0" maxBufferSize="104857600" maxReceivedMessageSize="104857600">
<readerQuotas maxDepth="104857600" maxStringContentLength="104857600"
maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600" />
</binding>
</basicHttpBinding>
puis de l'associer à un point de terminaison.
Si vous regardez dans votre fichier ServiceReferences.ClienConfig du côté client, vous devriez voir une liaison à un service WCF.
Vous pouvez le modifier pour ressembler à:
<binding name="ProductConfig" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
EDIT: Voici comment ajouter la liaison sur le côté serveur.
- Faites un clic droit sur web.config et dire « modifier la configuration de WCF »
- A droite, il y a un élément d'arbre « bindings »
- Faites un clic droit sur ce point et dire « Ajouter nouvelle liaison »
- Nommez la liaison et définissez tous les éléments Max * sur un nombre arbitrairement grand.
- Associez cette liaison à vos points de terminaison en développant vos services et en sélectionnant le point de terminaison que vous utilisez. Au BindingConfiguration, sélectionnez votre nouvelle liaison.
Vous pouvez également ajouter ceci manuellement à votre site Web.fichier de configuration, en trouvant l'élément
<system.serviceModel>
Il devrait y avoir un élément enfant <bindings>
quelque part là-dedans. Vous pouvez ajouter la liaison comme indiqué ci-dessus. Et puis faites défiler jusqu'à l'endroit où vos points de terminaison sont affichés et ajoutez une balise bindingConfiguration = "NewBinding0" dans le fichier XML.
EDIT Prenez 2:
Bon, bien sûr, voici un exemple de ce qu'il ressemble à un de mes projets:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<extensions>
</extensions>
<bindings>
<basicHttpBinding>
<binding name="NewBinding0" maxBufferSize="104857600" maxReceivedMessageSize="104857600">
<readerQuotas maxDepth="104857600" maxStringContentLength="104857600"
maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600" />
</binding>
</basicHttpBinding>
<mexHttpBinding>
<binding name="NewBinding1" />
</mexHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="policyBehavior">
<webHttp />
</behavior>
<behavior name="NewBehavior" />
</endpointBehaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="NewBehavior" name="ALMWCFHost.ServiceModel">
<clear />
<endpoint address="GuildService" binding="basicHttpBinding" bindingConfiguration="NewBinding0"
name="ProductConfig" contract="ALMWCFHost.IProductConfigModel"/>
<host>
<baseAddresses>
<add baseAddress="http://omrsrv004/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
si vous avez plus de problèmes avec cela, s'il vous plaît Fournissez des détails sur l'IDE que vous utilisez, et comment avez-vous ajouté vos points de terminaison de service à l'origine.
Espérons que la deuxième édition apportera plus de lumière sur la situation – Johannes