我想创建两个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
如何实现这一目标?
答案 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**)
而不是施放到日期时间