休息方法因查询字符串参数而异

时间:2011-11-17 05:39:15

标签: .net wcf

我想创建两个Rest方法,这些方法根据URI中的查询字符串参数而变化。

喜欢

[WebGet(UriTemplate = "Guest/{guestId}?day={day}&type={type}")]
[OperationContract(Name = "GetDetailByDayAndActivity")]
public GuestDetail GetDetail(string guestId, DateTime day, string type)

[WebGet(UriTemplate = "Guest/{guestId}?day={day}")]
public GuestDetail GetDetail(string guestId, DateTime day)

这给出了错误:

"Operation 'GetDetailByDayAndActivity' in contract 'IRestService' has a UriTemplate that expects a parameter named 'TYPE', but there is no input parameter with that name on the operation. "

访问仅包含day参数的方法时:http://testserver/GuestService/Guest/0?day=2011-10-20

如何实现这一目标?

2 个答案:

答案 0 :(得分:5)

找出导致此错误的原因。 接口中的参数名称不同。 URI中使用的名称必须与接口中的名称匹配。

此外,如果我们使用查询字符串,则无需定义单独的方法。单一方法可行,在这种情况下,其他参数将具有空值。

答案 1 :(得分:1)

您需要将获取参数映射到资源

试试这个

[WebGet(UriTemplate = "Guest/{guestId}/{day}/{type}"

第二个

[WebGet(UriTemplate = "Guest/{guestId}/{day}"

请注意,您需要更改调用

另一点将所有签名更改为字符串

例如

[WebGet(UriTemplate = "Guest/{guestId}?day={day}")]
public GuestDetail GetDetail(string guestId, **string day**)

而不是施放到日期时间