Использование параметров строки запроса для устранения неоднозначности совпадения UriTemplate

Я использую WCF 4.0 для создания REST-полнофункциональной веб-службы. Я хотел бы иметь разные методы обслуживания, вызываемые на основе параметров строки запроса в UriTemplate .

Например, у меня есть API, который позволяет пользователям получать информацию о человеке, используя в качестве ключа либо его водительские права, либо номер социального страхования. В моем ServiceContract / интерфейсе я бы определил два метода:

[OperationContract]
[WebGet(UriTemplate = "people?driversLicense={driversLicense}")]
string GetPersonByLicense(string driversLicense);

[OperationContract]
[WebGet(UriTemplate = "people?ssn={ssn}")]
string GetPersonBySSN(string ssn);

Однако, когда я вызываю свою службу обоими методами, я получаю следующее исключение:

UriTemplateTable не поддерживает несколько шаблонов, которые имеют эквивалентный путь как шаблон 'people? ssn = {ssn}', но разные строки запроса, где строки запроса не могут быть устранены с помощью буквальные значения. См. Документацию для UriTemplateTable для получения дополнительной информации. деталь.

Есть ли способ сделать это с помощью UriTemplates ? Вроде обычный сценарий.

Большое спасибо!

22
задан msplants 4 January 2012 в 00:30
поделиться