2012-01-03 16 views
5

Próbuję utworzyć usługę WCF, która zapewnia punkt końcowy SOAP i JSON. Do odwzorowania parametrów adresu URL żądania na parametry metody używam metody
.Parametry URI mapy do właściwości obiektu parametru?

Działa to dobrze w przypadku metod oczekujących parametrów prostych typów danych.

jednak następująca metoda oczekuje złożony obiekt i nie chcę go zmienić ze względu na SOAP-ramach usługi:

[OperationContract] 
Person Test(TestParameters parameters); 

podczas TestParameters wygląda (z większej liczby nieruchomości):

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

po wywołaniu metody poprzez GET teraz chciałbym być w stanie zainicjować parameters.First i parameters.Second z żądania URI, np

/Test?first=Foo&second=Bar 

Próbowałem już stosowania

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

metody.
Jednak ta składnia nie jest obsługiwana przez WCF. Komunikat o błędzie mówi:

System.InvalidOperationException: „test” Praca w umowie „IService1” ma UriTemplate że oczekuje parametr o nazwie „PARAMETERS.FIRST”, ale nie ma parametr wejściowy z tym nazwiskiem operacji.

Czy istnieje jakakolwiek inna składnia, która pozwala na sformułowanie odwzorowania parametru URI na właściwości obiektów parametrów?

W przeciwnym razie, czy wiesz, czy to zachowanie można łatwo dodać?

Z góry dziękujemy za odpowiedzi!

Odpowiedz

1

Będziesz musiał uciekać się do JSON, na przykład w połączeniu z metodą PUT lub POST. Aby uzyskać wyjaśnienie, patrz: this post.

Powiązane problemy