2010-08-10 4 views
2

Je reçois l'erreur suivante lorsque je connecte mon application Silverlight à mon service WCF. J'héberge ce wcf en tant que service d'auto-hébergement.erreur de stratégie interdomaine dans Silverlight avec WCF

Une erreur s'est produite lors de la tentative de demande auprès de l'URI 'http://lmr-hero/iSponsorWebSite/projectService.svc/basic'. Cela peut être dû à la tentative d'accès à un service de manière interdomaine sans qu'une politique interdomaine appropriée soit en place ou une stratégie inappropriée pour les services SOAP. Vous devrez peut-être contacter le propriétaire du service pour publier un fichier de stratégie inter-domaines et pour vous assurer qu'il permet l'envoi d'en-têtes HTTP liés au protocole SOAP. Cette erreur peut également être provoquée en utilisant des types internes dans le proxy de service Web sans utiliser l'attribut InternalsVisibleToAttribute. S'il vous plaît voir l'exception interne pour plus de détails.

Quelles sont les causes possibles de cette erreur?

+0

Où votre service est-il hébergé? – Siege898

+0

En fait, je l'ai d'abord hébergé comme un service d'auto-hébergement. Mais puisque je ne peux pas trouver un endroit pour mettre ces deux fichiers xml (clientaccesspolicy.xml et crossdomain.xml) quand je l'héberge en tant que service auto-hébergé, je l'ai hébergé dans le serveur IIS et mettre deux xml dans mon C: \ Inetpub \ wwwroot '. Ensuite, cela a fonctionné parfaitement. Merci pour le soutien à tous! –

+0

Dans la machine locale, il fonctionne très bien. mais quand j'ai déployé WCF dans IIS sur le serveur alors son ne fonctionne pas. c'est jeter la même erreur. Lorsque j'essaie d'ouvrir crossdomain.xml, il ne s'ouvre pas sur le serveur. Il est indiqué "Erreur de traitement des erreurs non spécifiées" http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd ". ' – user270014

Répondre

6

Si votre application Silverlight n'est pas hébergée sur le même domaine que le service, vous devez placer un fichier clientaccesspolicy.xml ou crossdomain.xml sur le serveur hébergeant le service.

Voir ce lien pour plus de détails: http://msdn.microsoft.com/en-us/library/cc197955%28VS.95%29.aspx

+0

J'ai mis ces deux fichiers xml dans mon' C: \ Inetpub \ wwwroot 'et cela a fonctionné. thx pour le support: D –

+0

J'ai rencontré ce problème lorsque mon application Silverlight et mon service WCF étaient hébergés dans Visual Studio avec ASP.NET Development Server (c'est-à-dire non hébergés dans IIS). Pour le réparer, j'ai dû changer le chemin virtuel pour le site web hôte WCF à /. La raison en est que Silverlight recherche clientaccesspolicy.xml à la racine du domaine qui héberge le service. Pour modifier le chemin virtuel, faites un clic droit sur le site web et choisissez Propriétés. –

+0

Dans la machine locale son fonctionnement bien. mais quand j'ai déployé WCF dans IIS sur le serveur alors son ne fonctionne pas. c'est jeter la même erreur. Lorsque j'essaie d'ouvrir crossdomain.xml, il ne s'ouvre pas sur le serveur. Il est indiqué "Erreur de traitement des erreurs non spécifiées" http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd ". ' – user270014

2

Cliquez avec le bouton droit sur le fichier .svc et appuyez sur l'affichage dans le navigateur. Vérifiez pour voir si elle est même hébergée et fonctionne correctement en premier. Cela vous donnera un bon point de départ.

0

Prenez soin de mettre en place un service Web WCF correctement dans Silverlight, lorsque vous utilisez Silverlight pour consommer le service Web. Contrairement à un client en mode console, dans Silverlight, vous ne pouvez pas créer un nouvel élément WCF dans votre solution, mais dans la partie .Web de votre solution Silverlight, cliquez avec le bouton droit sur Ajouter un nouvel élément appelé "Service WCF activé pour Silverlight". ". Maintenant, vous pouvez aller dans le dossier de l'application Silverlight, ajouter une référence de service et vous n'obtiendrez pas cette erreur d'exécution. Cela évitera l'erreur d'exécution à laquelle l'affiche d'origine fait référence.

Questions connexes