Я пытаюсь создать службу WCF, которая предоставляет SOAP и конечную точку JSON.
Для сопоставления параметров URL-адреса запроса с параметрами метода я использую метод WebGetAttribute
UriTemplate
.
Это прекрасно работает для методов, ожидающих параметры простых типов данных.
Однако следующий метод ожидает сложный объект, и я не хочу его менять из-за 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: Операция «Тест» в контракте «IService1» имеет UriTemplate, который ожидает параметр с именем «PARAMETERS.FIRST», но нет входного параметра с этим именемна операцию.
Существует ли какой-либо другой синтаксис, который позволяет формулировать сопоставление параметров URI со свойствами объектов параметров?
В противном случае, знаете ли вы, можно ли легко добавить это поведение?
Заранее большое спасибо за ваши ответы!