mercoledì 10 luglio 2013

[Silverlight + WCF] Chiamata Cross Domain

Non è consentito effettuare da Silverlight (per questioni di sicurezza) chiamate remote cross dominio, a meno che il servizio non espone il file clientaccesspolicy.xaml.
Per ovviare a ciò non ci resta che creare il file clientaccesspolicy.xml nella root progetto WCF:

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

Errore durante il tentativo di effettuare una richiesta all'URI xxxx. Ciò può essere dovuto al tentativo di accesso a un servizio in modalità di interdominio senza disporre di criteri di interdominio appropriati o con criteri non adatti ai servizi SOAP. Potrebbe essere necessario contattare il proprietario del servizio per pubblicare un file di criteri di interdominio e verificare che consenta l'invio di intestazioni HTTP correlate a SOAP. Questo errore potrebbe essere anche dovuto all'utilizzo di tipi interni nel proxy del servizio web senza utilizzare l'attributo InternalsVisibleToAttribute. Per ulteriori informazioni, vedere l'eccezione interna.

2 commenti:

  1. Sto sviluppando una applicazione silverlight che si deve connettere ad un web service che si trova su un'altro server ma e mi esce l'errore da lei descritto, ma non riesco a capire dove copiare di preciso il file clientaccesspolicy.xml grazie

    RispondiElimina
    Risposte
    1. Ciao, lo devi copiare nella root del servizio WCF

      Elimina