2009-08-21 5 views
6

cela va voler ma santé mentale. J'ai passé presque tout ce que j'ai trouvé sur le web et je n'ai pas fait un seul pas en avant. La frustration n'est pas assez forte pour décrire cette erreur qui surgit peu importe ce que je fais.CommunicationException lors de l'appel d'un WCF à partir de Silverlight

Mais l'un après l'autre.

J'ai une machine à 64bit W2008 Server avec VS 2008 SP1 version allemande, Silverlight Tools 3.0

Je veux consommer un WCF-service à partir d'une application Silverlight. Et, comme beaucoup de gens, je reçois cette Exception de Communication non-frustrante très frustrante à la fin de l'invocation.

J'ai créé un nouveau service WCF, nommé Endpoint et défini sa liaison à basicHttpBinding. J'ai ajouté l'attribut

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

à la classe Service1 et la ligne

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 

au system.serviceModel dans le App.config

Je suis parti tout le reste comme il est et testé le service via le client WCF avec succès. Ensuite, je publiais à mon IIS7 local http://localhost/WCFTest

Dans mon application Silverlight, j'ai ajouté le service au ServiceReference en utilisant http://europa.therestofmydomain/WCFTest/WcfTest.Service1.svc

J'ai ajouté le code suivant au client:

using OSMDeepEarthExample.ServiceReference1; 

... 
Service1Client s1 = new Service1Client(); 
s1.GetDataCompleted += new System.EventHandler<GetDataCompletedEventArgs>(s1_GetDataCompleted); 
s1.GetDataAsync(20); 

void s1_GetDataCompleted(object sender, GetDataCompletedEventArgs e) 
{ 
    CountFetchedData.Text = e.Result; 
} 

J'ai ajouté un clientaccesspolicy.xml ET un crossdomain.xml à la webroot (C: \ inetpub \ wwwroot)

clientaccesspolicy.xml:

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

crossdomain.xml:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*" /> 
    <allow-http-request-headers-from domain="*" headers="SOAPAction" /> 
</cross-domain-policy> 

Je redémarré IIS. Deux fois. Souvent. J'ai installé Web Development Helper pour obtenir des informations plus significatives sur ce qui ne va pas. Mais cela fait tomber l'IE.

Je n'ai plus d'idées. Et bientôt commencer à être agressif contre mon matériel. S'il vous plaît, aidez mon matériel!

Comme John a noté, je ne l'ai oublié la pleine errorMessage ici il vient:

Fehler beim Senden einer Anforderung un URI den "http://europa.therestofmydomain/WCFTest/WcfTest.Service1.svc". Ursache ist möglicherweise, dass ohne die entsprechende domänenübergreifende Richtlinie oder mit einer nicht für SOAP-Dienste geeigneten Richtlinie domänenübergreifend für einen Dienst zugegriffen wurde. Möglicherweise müssen Sie sich an den Besitzer des Diensts wenden, damit eine domänenübergreifende Richtliniendatei veröffentlicht und das Senden von sich auf SOAP HTTP-Headern zugelassen wird. Dieser Fehler kann auch durch Verwendung von internen Typen im Webdienstproxy ohne das InternalsVisibleToAttribute-Attribut verursacht werden. Weitere Détails finden Sie in der inneren Ausnahme.

En résumé, il est possible qu'une règle interdomaine soit manquante.

+0

De toute cette frustration, vous n'avez pas publié une seule fois l'exception que vous avez reçue. L'exception complète Le résultat de ex.ToString(). –

+0

Vous avez raison, j'ai ajouté l'erreur à la fin de mon article – Aaginor

Répondre

7

Ouf, je l'ai fait! J'ai supprimé le clientaccesspolicy.xml du site Webroot, en ne conservant que crossdomain.xml. Quel odyssée! Merci d'avoir écouté, ça a aidé à me vider l'esprit. J'espère que quelqu'un avec un problème similaire trouvera le texte utile un peu!

+0

cela fonctionne également avec vs2010, sl4, w7. après des heures j'ai trouvé votre solution. dankeschööööön – devio

+0

Homme ... MERCI. Cela a fonctionné pour moi aussi. Quelqu'un at-il une explication raisonnable pour ce comportement (à mon humble avis, étrange)? –

Questions connexes