【发布时间】:2012-01-04 00:30:07
【问题描述】:
我正在使用 WCF 4.0 创建一个 REST-ful Web 服务。我想做的是根据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 没有办法做到这一点吗?这似乎是一种常见的情况。
非常感谢!
【问题讨论】:
-
@BaTTy.Koda 感谢您的回复。我最终完全按照该帖子的建议进行了操作,并且效果很好。我认为由于该帖子是从 2008 年开始的,因此 MSDN 文档 (msdn.microsoft.com/en-us/library/bb675245.aspx) 谈到了字符串查询的歧义性,这可能有所改进。但是唉……
标签: c# wcf uritemplate