Я пытаюсь создать службу WCF, которая предоставляет SOAP и конечную точку JSON.
Для сопоставления параметров URL-адреса запроса с параметрами метода, я использую метод UriTemplate
.Параметры карты URI для свойств объекта параметра?
Это отлично подходит для методов, ожидающих параметров простых типов данных.
Однако следующий метод ожидает сложный объект, и я не хочу, чтобы изменить его из-за SOAP-часть службы:
[OperationContract]
Person Test(TestParameters parameters);
в то время как TestParameters выглядит (с большим количеством свойств):
[DataContract]
public class TestParameters
{
[DataMember]
public string First
{
get;
set;
}
[DataMember]
public string Second
{
get;
set;
}
}
При вызове метода с помощью GET сейчас, я хотел бы иметь возможность инициализировать parameters.First
и parameters.Second
из запроса URI, например,
/Test?first=Foo&second=Bar
Я уже пытался применять
[WebGet(UriTemplate = "/Test?first={parameters.First}&second={parameters.Second})]
методу.
Однако этот синтаксис не поддерживается WCF. Сообщение об ошибке говорит:
System.InvalidOperationException: Операция «Test» в контракте «IService1» имеет UriTemplate, что ожидает параметр с именем «PARAMETERS.FIRST», но нет входного параметра с таким именем Операция.
Есть ли другой синтаксис, который позволяет формулировать отображение параметров URI свойствам объектов параметров?
В противном случае вы знаете, легко ли это добавление?
Большое спасибо за ваши ответы!