2009-08-21 16 views
6

questo sta per rubare la mia sanità mentale. Ho passato quasi tutto quello che ho trovato sul web e non ho fatto alcun passo in avanti. La frustrazione non è abbastanza forte per descrivere questo messaggio errante che viene fuori a prescindere da quello che sto facendo.CommunicationException quando si chiama un WCF da Silverlight

Ma uno dopo l'altro.

Ho una macchina server W2008 a 64 bit con VS 2008 SP1 versione tedesca, Silverlight Tools 3.0

voglio consumare una WCF-Service da un'applicazione Silverlight. E, come molte persone, ottengo questa Eccezione di comunicazione non descrittiva molto frustrante alla fine del richiamo.

Ho creato un nuovo servizio WCF, denominato Endpoint e impostato il binding a basicHttpBinding. Ho aggiunto l'attributo

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

alla classe Service1 e la linea

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 

alla system.serviceModel nel App.config

ho lasciato tutto il resto così com'è e testato il servizio via WCF-client con successo. Poi ho pubblicato al mio IIS7 locale per http://localhost/WCFTest

All'interno della mia applicazione Silverlight, ho aggiunto il servizio al ServiceReference utilizzando http://europa.therestofmydomain/WCFTest/WcfTest.Service1.svc

ho aggiunto il seguente codice al 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; 
} 

ho aggiunto un clientaccesspolicy.xml E un crossdomain.xml al 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> 

ho riavviato IIS. Due volte. Spesso.

Ho installato Web Development Helper per ottenere informazioni più significative su COSA è sbagliato. Ma questo fa cadere l'IE.

Sono fuori di idee. E presto inizi a essere aggressivo contro il mio hardware. Per favore aiuta il mio hardware!

Come ha osservato John, ho fatto dimenticato la piena errorMessage qui si tratta:

Fehler beim Senden einer Anforderung an den URI "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 auf 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 beziehenden HTTP-Headern zugelassen wird. Dieser Fehler kann auch durch Verwendung von internen Typen in Webdienstproxy ohne das InternalsVisibleToAttribute-Attribut verursacht werden. Weitere Dettagli trovati Sie in der inneren Ausnahme.

In breve, si dice che potrebbe mancare una regola tra domini.

+0

Fuori da quella frustrazione, non hai mai pubblicato l'eccezione che hai ricevuto. La piena eccezione. Il risultato di ex.ToString(). –

+0

Hai ragione, ho aggiunto il messaggio errato alla fine del mio post – Aaginor

risposta

7

Whew, l'ho fatto!

Ho rimosso il clientaccesspolicy.xml dal webroot, lasciando lì solo crossdomain.xml. Che odissea! Grazie per l'ascolto, mi ha aiutato a schiarirmi le idee. Spero che qualcuno con un problema simile troverà il testo un po 'utile!

+0

anche questo funziona con vs2010, sl4, w7. dopo ore ho trovato la soluzione. dankeschöööööön – devio

+0

Man ... GRAZIE. Questo ha funzionato anche per me. Qualcuno ha una spiegazione ragionevole per questo comportamento (IMHO, strano)? –

Problemi correlati