2012-01-03 21 views
5

Sto provando a creare un servizio WCF che fornisce un SOAP e un endpoint JSON.
Per il mapping dei parametri dell'URL di richiesta ai parametri del metodo, utilizzo il metodo .Mappare i parametri URI alle proprietà dell'oggetto parametro?

Questo funziona correttamente per i metodi che prevedono parametri di tipi di dati semplici.

Tuttavia, il seguente metodo si aspetta un oggetto complesso e non voglio cambiarlo a causa del SOAP-parte del servizio:

[OperationContract] 
Person Test(TestParameters parameters); 

mentre TestParameters sembra (con un numero maggiore di proprietà):

[DataContract] 
public class TestParameters 
{ 
    [DataMember] 
    public string First 
    { 
     get; 
     set; 
    } 
    [DataMember] 
    public string Second 
    { 
     get; 
     set; 
    } 
} 

Quando si chiama il metodo GET via ora, vorrei essere in grado di inizializzare parameters.First e parameters.Second dalla richiesta URI, ad esempio,

/Test?first=Foo&second=Bar 

già provato applicando

[WebGet(UriTemplate = "/Test?first={parameters.First}&second={parameters.Second})] 

al metodo.
Tuttavia, questa sintassi non sembra essere supportata da WCF. Il messaggio di errore dice:

System.InvalidOperationException: Operazione 'Test' nel contratto 'IService1' ha un UriTemplate che si aspetta un parametro denominato 'PARAMETERS.FIRST', ma non v'è alcun parametro di input con quel nome su l'operazione.

C'è qualche altra sintassi che consente di formulare la mappatura dei parametri URI alle proprietà degli oggetti parametro?

Altrimenti, sai se questo comportamento potrebbe essere aggiunto facilmente?

Mille grazie in anticipo per le vostre risposte!

risposta

1

È necessario ricorrere a JSON, ad esempio combinato con il metodo PUT o POST. Vedi this post per una spiegazione.

Problemi correlati