Come abilitare nativamente JSONP per il servizio WCF esistente?

Ho un servizio esistente come il seguente metodo:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)] public class SomeService : ISomething { public SomeListResults SomeList(SomeParams someParams) { .... } } 

C’è un modo semplice per consentire le chiamate JSONP e anche JSON allo stesso tempo (rilevarlo). È nativo?

Aggiorna la configurazione per avere l’aspetto:

                  

Vedi qui per un post sul blog che fornisce una procedura dettagliata per la creazione di un servizio wcf accessibile da più domini.

Ciò consentirà al tuo servizio di accettare richieste da fonti interdominio.

In termini di determinare se tamponare la tua risposta (il p in jsonp),

Grazie a @carlosfigueira per questo:

Se si utilizza .Net 4 JSONP è supportato in modo nativo. Finché la richiesta ha un parametro di stringa di query chiamato “callback” (questo nome può essere configurato), la risposta verrà riempita con il nome della funzione.

Altrimenti, dovrai scrivere un’ispettore di messaggi personalizzati che rispetti la risposta in modo appropriato.

La nuova funzionalità JSONP è esposta tramite WebHttpBinding. La configurazione per CustomersService sarebbe simile a questa:

            

Consumo di JSONP con jQuery

  // Get the JsonP data $.getJSON('http://localhost:65025/CustomersService.svc/GetCustomers?callback=?', null, function (customers) { alert('Received ' + customers.length + ' Customers'); });