2009-08-24 7 views
0

J'apprends à construire des applications Silverlight 3 en utilisant WCF pour communiquer avec le backend. Nous allons déployer sur IIS7 sur Server2008 ou Vista. Les fichiers binaires clients ainsi que les fichiers binaires du service Web se trouvent tous dans le même répertoire Web IIS. Quand j'appuie sur la page d'accueil du service (http://localhost/MyService.svc), cela revient très bien. Lorsque je clique sur l'application (http://localhost/index.html), j'obtiens mon application Silverlight. Le rendu de la matière statique est correct, mais les deux champs im essayant de remplir retournent avec CrossDomainError. D'après ce que je comprends, cela se produit lorsque vous appuyez sur un service à partir d'une page hébergée sur un autre domaine. Je ne crois pas que je le fais, sauf involontairement.CrossDomainError sur le même domaine

Le message d'exception est:

[CrossDomainError] Arguments: http://localhost:2721/Service1.svc chaînes de ressources Debugging ne sont pas disponibles. Souvent, la clé et les arguments fournissent suffisamment d'informations pour diagnostiquer le problème. Voir [une URL horrible que je ne vais pas reproduire ici car il était inutile de toute façon]

J'ai ouvert le port 2721 à la fois entrant et sortant sans effet.

Des pensées?

Répondre

2

Pour que deux documents soient considérés comme ayant la même origine, tout doit être exactement le même: protocole (http/https), domaine et port. Donc, si vous ouvrez http://localhost et essayez de faire une demande à http://localhost:2721, vous obtiendrez cette erreur.

+0

merci! question de suivi ici: http://stackoverflow.com/questions/1325118/how-do-you-create-obtain-a-cross-domain-policy-for-an-iis7-wcf-service –

1

Vous devez avoir un fichier crossdomain.xml et/ou un clientaccesspolicy.xml à la racine de votre site Web (crossdoomain.xml est requis pour la compatibilité flash, les deux fonctionnent avec silverlight). Ce xml doit coter ce qui suit:

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

ok donc j'ai fait cela mais je reçois toujours l'erreur de domaine croisé. Y at-il autre chose que je devrais considérer? –

Questions connexes